欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

c语言指针的指针

发布时间:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c语言指针的指针 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

c语言在函数传递时常常使用如下的形式。 1 void get(int **p)

对于这个形式,我想过为什么不能够使用 *p 作为形参呢。下面我们看一下代码和执行结果

1 void get(int **p) 2 { 3 printf("%p\n",*p); 4 *p = (int *)malloc(sizeof(int) * 5); 5 printf("%p\n",*p); 6 } 7 8 int main() 9 { 10 int *ptr = NULL; 11 printf("%p\n",ptr); 12 get(&ptr); 13 printf("%p\n",ptr); 14 return 0; 15 }

 

由这个结果可以看出一开始ptr初始化为NULL,后面经过get()函数以后ptr的指针为00511448,包括后面的函数退

出以后ptr的值也是00511448 。但是下面指传入指针的结果相比较,我们就可以发现问题了。

 

1 void get(int *p) 2 { 3 printf("%p\n",p); 4 p = (int *)malloc(sizeof(int) * 5); 5 printf("%p\n",p); 6 } 7 8 int main() 9 { 10 int *ptr = NULL; 11 printf("%p\n",ptr); 12 get(ptr); 13 printf("%p\n",ptr); 14 return 0; 15 }

 在上面的结果看出来,函数结束以后,ptr的值为00000000了,不再和上面的结果一样。

 


 

从这里我们可以看出来问题了。传入的是指针的值,值是可以改变的。所以在后面函数结束以后ptr的值就被改变

了。如果后面我们需要用到这个指针,那么得到的结果就是错误的,是不可靠的 ;所以我们需要向函数中传递一

个地址,然后在函数结束后,内部分配的地址就依然存在并且ptr指向这个地址,可以使用。!!!!

转载于:https://www.cnblogs.com/ghost-98210/p/9495430.html

总结

以上是生活随笔为你收集整理的c语言指针的指针的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。