hyqd.net
当前位置:首页 >> C语言中指针作为实参使用SWAP函数的问题。 >>

C语言中指针作为实参使用SWAP函数的问题。

c语言中形参与实参的关系是:形参是实参的值副本.无论参数的类型是什么,传递到子函数中的形参只是实参的值.所以,在改变形参变量自身的值时,是与实参无关的.换句话说,形参的改变不会影响到实参.但,如果参数类型是指针类型

没有任何错误啊!p1,p2本来就是int*类型的,swap参数也是int*类型的, if(a>b) swap(p1,p2);这一句没错啊!swap本来就需要指针变量,p1,p2正好又是指针变量,直接写上去就可以了!swap() 中是 int *p1 和int *p2这是因为这是swap的定义,既然是定义就要声明参数的类型,这里声明的是int*类型,那使用的时候就要传递int*类型的.主函数里的类型也是int*,对应上了,就可以了.在定义变量的时候,建议你把*和数据类型当做一个整体,看成一种新的数据类型,不要把*和变量看做一个整体.比如int* p,int*是一个数据类型,p是变量名.

c语言函数都是通过传值方式将实参传递给形参.至于这个值是数值还是内存地址,有很大区别 如果定义成swap(int a,int b),实际传递a、b的数值,不会更改其真实值的,因为在函数swap内交换的是a与b的复制品 如果定义成swap(int* a,int* b),

第一问: 你说的是对的.表扬! 第二问,不是改动s的值,由于a[2]和a[3]都数数组a 中的单元,所以他们的地址的相邻的,直接使用 s+1;就可以了 s+1 就是将s 指向的地址 向前指一下,但是 并不改动s的指向的地址, 因为没有出现赋值语句,如s++ s++ 就是将s的地址向前移动一下, 就不符合你想要的了 s+1 你可以这样理解, 假如s=100 s+1 请问s的值变了没,没变吧, 但是s++ 就变成了 101

类型匹配,这个void*目的是传入任意类型的指针,将所有的指针都按照字节读取,第三个参数是计算的字节数,所以用char*或byte*都可以,内部其实可以改成int *来实现 将一段长度为iDataSize的缓冲区互换,这个缓冲区可以是数组也可以是字符串甚至其他任意类型,这个函数写成比较通用的了

我觉得你连基本的函数还没搞明白,建议先把函数调用,参数传递搞清楚了再学指针.这明显不是正确调用函数的方式 swapmm(double *p, double *q, double t=0.0);还有,程序中逻辑也存在问题:for(p=a;pmax)max=a[i];if(fabs(a[i]) 评论0 3 0

void swap(int* a, int* b){int t = *a;*a = *b;*b = t;}swap(&a, &b);

假设你使用的c语言 #include void swap(int* a,int* b)// a,b指针做形参 { int temp=*a;// 暂存指针a所指变量的值 *a=*b;// 指针b所指的值赋值给a所指变量 *b=temp;// 指针b所指变量的值变为原先a所指的值 } int main(void) { int a=10,b=20; swap(&

#include<stdio.h>void swap(int x,int* y){ int t; t=x; x=*y; *y=t;}int main(){ int a=5,b=10; swap(a,&b); printf("%d,%d\n",a,b); return 0;}swap函数第一个是值传递,第二个传递的是指针,值传递为单项传递,相当于运行swap时,又创建了一个内存存放a的数值,但是指针传递不创建新的内存,所以都是5

参数里面的&表示引用型参数 一般的参数传递的时候,形参是实参的副本,也就是说,形参虽然和实参一样,但是在内存中的位置不同 而引用型参数,在函数参数传递的时候,并不要复制参数,形参和实参在内存中是同一个位置,因此修改形参,实参也变化了

网站首页 | 网站地图
All rights reserved Powered by www.hyqd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com