c语言如何交换地址

  • C语言中函数调用,为什么交换了地址,可是所指的值还是不变那???_百度...
    答:p=&x 就是把 x的地址保存在 指针 p中. *p 就是得到 值. *p=3.q也差不多.你下面 sqap(p,q) . 就是把地址传过去了.可是传回来的值没有改变,为什么呢!原因很简单.因为你的 int *t;int*t;t=a;a=b;b=t;交换的是 a和b 的地址.不要忘记了,当调用一个函数时.os会为 ...
  • 定义两个变量ab如何用c语言编程使两个变量的值能相互交换
    答:2、下面还需要定义指针,需要定义两个指针p1和p2,然后把a的地址赋值给p1,把b的地址赋值给p2。3、然后就是调用函数,该函数没有返回值,就直接调用,但是参数进入的是a和b的地址,而不是a和b。4、 函数用完之后,就是输出a和b的值看一看是否进行了互换。5、a和b的地址传给x和y,我们通过指针...
  • c语言中交换两个数据,为什么数组是地址传递捏
    答:回答:如果是不是传地址,那会在函数中重新定义两个变量分别等于两个参数的值,对新定义的两个变量进行操作。和原来的两个变量无关。 如果是传地址,那就是把两个数的地址传到函数中,对两个地址中的内容进行操作。所以会改变两个数的值。 一般如果要通过函数来改变参数的值,C都是要用传地址的,C++还...
  • C语言中函数调用,为什么交换了地址,可是所指的值还是不变那???_百度...
    答:求函数的运行结果 #include<stdio.h> void swap(int*a,int*b) {int*t; t=a;a=b;b=t; } main() {int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf("%d%d\n",*p,*q); 结果是35 照例来说虽然被调用函数没有返回值,但是指针所指的地址不是发生了交换吗。。... 展开 轻轻...
  • c语言二维数组第一行和第三行交换位置
    答:设数组为int a[M][N];那么 交换部分的语句为 int i,t;for(i = 0; i < N; i ++){ t = a[1][i]; a[1][i]=a[3][i]; a[3][i]=t;}
  • c语言中交换两个数据,为什么数组是地址传递捏
    答:如果是不是传地址,那会在函数中重新定义两个变量分别等于两个参数的值,对新定义的两个变量进行操作。和原来的两个变量无关。如果是传地址,那就是把两个数的地址传到函数中,对两个地址中的内容进行操作。所以会改变两个数的值。一般如果要通过函数来改变参数的值,C都是要用传地址的,C++还可以...
  • C语言如何将二位字符串数组中的两个元素交换位置
    答:include<stdio.h>#include<string.h>void main() { char s[2][80]={ "aaa","bbbb" },char buf[80]; strcpy(buf,s[0]); strcpy(s[0],s[1]); strcpy(s[1],buf); //类似于整数变量交换值 printf("%s\n%s\n",s[0],s[1]);} ...
  • C语言里通过地址传递实现值的交换时,指针也随之改变吗
    答:int a =0,b=1; int *pt; pt = &a; //改变指针 pt = &b;可以这样理解,每个变量都有一个指针,用 &变量名 这种方式来取得。你可以这样验证指针是否变化。int a=1,b=0; printf(&a,&b); exchange(&a,&b); printf(&a,&b); 传址来交换,感觉就是原来...
  • 关于C语言中交换两个变量的几种做法?求详细解释!实际运行中fun2()可交...
    答:实际上是 fun1 ,fun3 能够生效,而fun2没有生效。初始状态下 a=3 ,b=8,fun1 进行一次交换,a=8 b=3,在fun2中, 只是交换了两个地址,但是这里函数里面交换的地址对外面是没有影响的,所以依然是 a=8 b=3,如果你在fun2 内部 使用printf("%d %d\n", *x, *y);就能看到给外面不一...
  • c语言两个整数交换位置输出
    答:参考代码如下:include<stdio.h> void Swap(int **a, int **b){ int t;t=**a;a=**b;b=t;} int main(){ int a, b, *pa=&a, *pb=&b;scanf("%d %d", pa, pb);Swap(&pa, &pb);printf("%d %d\n", a, b);return 0;} ...

  • 网友评论:

    慕泥19738863390: c语言 怎样把两数的地址交换 -
    58243陈刚 : 楼上的只是把指针变量中的值进行了交换.原来p指向a变量的地址,q指向b变量的地址,交换后,p指向b变量的地址,q指向a变量的地址. 但是事实上a变量的地址还是原来的地址,b变量的地址还是原来的地址. 一个变量在申明的时候,系统就会给它分配一块地址,这个地址是不会改变的,你可以修改这个变量的值,但是这个变量的地址你没办法修改它.也就是说,int a;的时候如果a的地址在0x0001,那么它永远在这里,无法改动. &a = 0x0002; //此类的写法企图修改a变量的地址,编译器会报错

    慕泥19738863390: c语言如何实现链表中,相邻两个节点的地址两两互换? -
    58243陈刚 : 设置一个临时指针t 相邻节点指针a b t=a a=b b=t 就好了

    慕泥19738863390: c语言中怎样交换两个数组 -
    58243陈刚 : 逐个元素交换即可. 前提是两个数组必须有同样的长度 否则无法交换. 函数如下: void swap_array(int *a, int *b, int l) {int i, t;for(i = 0; i<l; i ++){t = a[i];a[i] = b[i];b[i] = t;} }构建好两个等长数组,调用这个函数就可以a和b是两个数组名, l为数组元素个数,即长度.

    慕泥19738863390: (C语言)用指针实现两个变量的交换.急急急,越简单越好. -
    58243陈刚 : void swap(int a[]) { int temp; temp = a[0];a[0] = a[1]; a[1] = temp; } 你直接传一个数组名进去就行了,如:int a[2]; //两个变量 swap(a);//传地址

    慕泥19738863390: c语言交换两个数的问题???? -
    58243陈刚 : 两段代码的差异是: 第一段代码:将a、b两个数的地址传入swap()函数,此函数内部拿着这两个数的地址,将两个地址下的值做了交换; 第二段代码:将a、b两个数的地址传入swap()函数,此函数内部将这两个地址彼此做了交换(即两个指针所指的地址发生了互换,但相应地址下的数并没有变化).因为对于函数swap()来说,传入的两个地址是值传递形式的,在其内部是局部作用域下的两个变量,完成这两个地址“值”的交换,并不能对调用时的实参产生影响.故而交换失败. 另外,再给你个无需中间变量交换两个数值的写法: a = b - a + (b = a); // 无需中间变量交换a、b的值

    慕泥19738863390: C语言传地址调用 -
    58243陈刚 : 1中只是改变了指针p1,p2所指向的地址,不会影响a,b的值; 2中改变了指针p1,p2指向地址的内容,因此影响a,b的值; 3中定义int *p,指针p没有初始化,可能指向任何地址,而它指向的地址一般都是不可访问的,因此产生的非法访问,使程序崩溃.这样改一下: swap_3(int *p1, int *p2) {int data=100;int *p=&data;*p = *p1;*p1 = *p2;*p2 = *p; }让 p 指向一个正确的地址,就不会造成程序崩溃了.

    慕泥19738863390: c语言中是怎么实现交换的··· -
    58243陈刚 : #include"stdio.h"intswap(int*a,int*b){inttemp;temp=*a;*a=*b;*b=temp;}main(){intx,y;printf("请输入x与y的值,用空格隔开\n");scanf("%d%d",&x,&y);printf("x=%d,y=%d\n",x,y);swap(&x,&y);printf("交换后\nx=%d,y=%d\n",x,y);}只有地址交换,才可以实现交换.否则只是函数内部的变化.不会影响到主函数

    慕泥19738863390: 在c语言二维数组里能否只交换第一行和第二行的首地址(记住哦,只交 -
    58243陈刚 : 可以整一个临时的数组交换就行了.一维数组就相当于一个指针,二维数组就相当于指针的指针. 即int a[10],a其实就是一个int *.int b[10][10],b就是一个int **,而b[0]就是一个int *. 比如你的数组a[0] = {1 2 5 7} a[1] = {5 3 8 0} a[2] = {2 4 7 9},...

    慕泥19738863390: C语言中如何将一个值放入一个地址?
    58243陈刚 : 地址都用指针来指向的 例如int *p; p=(int*)0x10101010; *p=1;就把1这个数字放到0x10101010这个地址去了

    慕泥19738863390: c语言 交换位置 -
    58243陈刚 : 最快的方法就是,按距离的长短选择从上面过还是从下面过.比如1234567.选择上路的有(17)1次间距0,(26)5次间距2,选择下路的有(35)3次间距1.计算移动次数的算式是 间距*2-1

    热搜:c语言怎么交换两个数 \\ 两数交换位置的c语言 \\ c++编程入门自学 \\ 交换整数c语言pta \\ c语言ab值交换并输出 \\ c语言数值交换 \\ c++编程 \\ c++交换两个变量的值 \\ c语言如何让两个值互换 \\ c语言交换 \\ c语言编程交换ab的值 \\ c如何交换两个变量的值 \\ c语言a和b值互换的程序 \\ c语言ab交换输出 \\ c语言交换字符 \\ 两个数交换的c语言程序 \\ c语言如何交换两个值 \\ 交换三个整数的次序c语言 \\ c语言交换变量a和b的值 \\ c语言前后数字交换 \\

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网