高端大气网站设计欣赏,苏州老字号企业官方的网站策划书,电子商务网站建设李洪心课后答案,云游戏平台二级指针又叫双指针。C语言中不存在引用#xff0c;所以当你试图改变一个指针的值的时候必须使用二级指针。C中可以使用引用类型来实现。
下面讲解C中的二级指针的使用方法。
例如我们使用指针来交换两个整型变量的值。
错误代码如下#xff1a;
一级指针 [cpp] view pla…二级指针又叫双指针。C语言中不存在引用所以当你试图改变一个指针的值的时候必须使用二级指针。C中可以使用引用类型来实现。
下面讲解C中的二级指针的使用方法。
例如我们使用指针来交换两个整型变量的值。
错误代码如下
一级指针 [cpp] view plaincopyprint? #include stdio.h void swap(int *a,int *b) { int *tmpNULL; tmpa; ab; btmp; } int main(int argc,char **argv) { int a2; int b3; printf(Before swap a%d b%d\n,a,b); swap(a,b); printf(After swap a%d b%d\n,a,b); return 0; } 输出的结构如下 结果分析不论是数值还是指针swap函数中的参数传递的是总是值所以在上述函数中即使a和b的地址已参数传递给swap函数而在函数内交换的是a和b的值main函数中a的地址和b的地址而交换完毕函数相应的参数从栈中弹出并不能返回给调用函数所以该swap函数中的操作是徒劳。
这里完全可以直接交换a和b的值不过如果a和b不是一个32位的整型变量而是一个复杂的数据结构这样做会降低效率。如下; [cpp] view plaincopyprint? void swap(TYPE *a,TYPE *b) { TYPE tmp; tmp*a; *a*b; *btmp; } 二级指针
下面是使用二级指针分配内存的例子 [cpp] view plaincopyprint? #include stdio.h #include stdlib.h #include string.h void memorylocate(char **ptr) { *ptr(char *)malloc(10*sizeof(char)); } int main(int argc,char **argv) { char *buffer; memorylocate(buffer); strcpy(buffer,12345); printf(buffer %s\n,buffer); return 0; } 当想改变指针的值的时候不妨考虑使用二维指针。