c语言指针参数
㈠ c语言指针作为函数参数
第二行的函数声明有问题
int *fmax(int*,int*);
㈡ C语言用指针作函数参数
选D
因为第一个参数是地址传递,fun(&b,a);中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。
㈢ C语言形参指针
1 这两种形式没有任何区别,定义的都是char* 类型的指针,不过有的书上建议采用*和变量相靠近专的写法,这属样可以避免连续声明时的错误,例如:char *ptr,a;可以明显知道一个是指针的变量一个是char类型的变量。
2 二维数组实际可以声明成指向指针的指针。这样在接受形参的时候,就可以用一个双重指针来接受。
void f(int **a) //怎么写?
{
}
int a[100][100];
f(a);
3 返回值是一个指针就可以实现了,不过返回的地址一定要是在堆空间申请的空间,或者是在静态区的空间。不要返回在函数栈中的地址,以防止在退出函数时,栈空间释放,成为幽灵内存。
char* fun(){
char* ptr ="abc";
return ptr;
}
㈣ c语言指针的指针做函数参数
定义sort函数时使用的参数是指针,需要注意的是这个指针是指向数组的,数组的名称其实就是一个指针,所以p可以做sort的参数
㈤ c语言中指针作为形参,代码如下:
你要用*去解引用,这样才能改变指针指向内存的值。
你的swap函数写的有问题,正确的写法有人给了。
至于为什么*x,*y的值没有改变,因为你交换的是2个形参的值,虽然你传入的是指针,但是你没有把它们当成指针来用,最后的结果跟传非指针值是一样的。
如果想真正改变实参的值,就必须交换指针指向的内存,而不是单纯交换指针变量本身。形参是通过堆栈传递的,只有用类似 *x = 1;这样的语句操作指针指向的内存,才能影响到实参,否则实参的值是不会改变的。
其实最好的方式就是去VS里调试运行,仔细观察运行过程,就能比较清晰地了解指针。单纯的理论是站不住脚的,拉出来溜溜就一清二楚了。
想对你能有帮助。
㈥ C语言字符串指针作函数参数
实参数组p中的内容没有改变
因为fun函数仅仅是改变了参数s指针的指向,使其指向了局部变量数组a而已