二级指针又叫双指针。C语言中不存在引用,所以当你试图改变一个指针的值的时候必须使用二级指针。C++中可以使用引用类型来实现。
下面讲解C中的二级指针的使用方法。
例如我们使用指针来交换两个整型变量的值。
错误代码如下:
一级指针
- #include<stdio.h>
- voidswap(int*a,int*b)
- {
- int*tmp=NULL;
- tmp=a;
- a=b;
- b=tmp;
- }
- intmain(intargc,char**argv)
- {
- inta=2;
- intb=3;
- printf("Beforeswapa=%db=%d\n",a,b);
- swap(&a,&b);
- printf("Afterswapa=%db=%d\n",a,b);
- return0;
- }
输出的结构如下:
结果分析:不论是数值还是指针,swap函数中的参数传递的是总是值,所以在上述函数中即使a和b的地址已参数传递给swap函数,而在函数内交换的是a和b的值(main函数中a的地址和b的地址),而交换完毕,函数相应的参数从栈中弹出,并不能返回给调用函数,所以该swap函数中的操作是徒劳。
这里完全可以直接交换a和b的值,不过如果a和b不是一个32位的整型变量,而是一个复杂的数据结构,这样做会降低效率。如下;
- voidswap(TYPE*a,TYPE*b)
- {
- TYPEtmp;
- tmp=*a;
- *a=*b;
- *b=tmp;
- }
二级指针
下面是使用二级指针分配内存的例子
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- voidmemorylocate(char**ptr)
- {
- *ptr=(char*)malloc(10*sizeof(char));
- }
- intmain(intargc,char**argv)
- {
- char*buffer;
- memorylocate(&buffer);
- strcpy(buffer,"12345");
- printf("buffer%s\n",buffer);
- return0;
- }
当想改变指针的值的时候不妨考虑使用二维指针。
分享到:
相关推荐
C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = 5; int *p1 = &a; //-打印地址-----地址相同--------------- printf(&a = %p\n, &a);//...
Linux运维-嵌入式物联网开发教程-C语言使用二级指针方式控制二维数组.mp4
今天学习c语言指针之二级指针示例,还不错,大家一起看看吧。
C语言二级是Android客户端目前最全面的免费离线C语言二级考试参考书籍,主要内容包括: 1、C语言的结构 2、数据类型及其运算 3、基本语句 4、结构程序设计 5、循环结构程序设计 6、数组的定义和引用 7、函数、...
本文主要介绍C语言 二级指针,这里整理了C语言中二级指针的基础资料并附有示例代码和实现结果,帮助大家学习理解相关知识,有学习的朋友可以参考下
全国计算机二级:C语言之指针、数组和函数
9.1 1分钟彻底理解指针的概念 9.2 大话C语言指针变量 9.3 C语言指针变量的运算 9.4 数组指针(指向数组的指针) 9.5 字符串指针(指向字符串的
主要介绍了详解C语言-二级指针三种内存模型的相关知识,文中代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
C语言二级是Android客户端目前最全面的免费离线C语言二级考试参考书籍,主要内容包括: 1、C语言的结构 2、数据类型及其运算 3、基本语句 4、结构程序设计 5、循环结构程序设计 6、数组的定义和引用 7、函数、指针、...
二级C语言 第九章 指针.docx 学习资料 复习资料 教学资源
二级C语言 第九章 指针.doc 学习资料 复习资料 教学资源
如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。 下面一起来学习下
C语言二级是Android客户端目前最全面的免费离线C语言二级考试参考书籍,主要内容包括: 1、C语言的结构 2、数据类型及其运算 3、基本语句 4、结构程序设计 5、循环结构程序设计 6、数组的定义和引用 7、函数、...
二级水平的指针个人理解与解释 有个人的代码解释与验证 纯属个人理解!
主要介绍了C语言 一级指针与二级指针详细介绍的相关资料,需要的朋友可以参考下
B):也很简单,与C)表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针。 A):fun1 是函数名吗?回忆一下前面讲解数组指针时的情形。我们说数组指针这么定义或许更清晰: int (*)[10] p;
1、讲解二级指针的概念和原理; 2、讲解二级指针与指针数组的关系; 3、讲解DOS参数传递的内部原理;
C语言0基础超详细从基础到进阶课程 C语言二级一次通关班课程 附带考试模拟系统! (1)\内容 (2)\内容\绝密押题;目录中文件数:4个 ├─二级C语言考前押题(选择题).pdf ├─二级C语言考前预测题.rar ├─二级公共...