浏览 4285 次
锁定老帖子 主题:c/c++编程利用指针间接赋值
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2020-12-24
多级指针像一把双刃剑,有利也有弊。你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸的错误。 其中,指针有一个非常重要的作用:间接赋值。 你能够通过n级指针去修改n-1级指针的内容,甚至直接修改指针所指向的内存空间 例如: 你在main函数里面声明了一个字符串指针,然后你想通过调用一个外部函数来修改它。这个时候,你就可以将这个字符串指针的地址传递给函数。这样,函数的参数就是一个二级指针了,通过这个二级指针,你可以很方便的修改字符串的内容。 代码如下: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> int Test1(char **p1) { char *temp = (char *)malloc(50); strcpy(temp,"hey!"); //间接赋值 *p1 = temp; //更改指针所指向的内存空间 printf("T1 %d\n",*p1); //打印出地址 } int Test2(char *p2) { strcpy(p2,"goodBy!"); printf("T2 %d\n",p2); //打印出地址 ,会发现和实参的地址一样 } //间接赋值 //利用n级指针 改变n-1级指针的值 int main(int argc,char *argv[]) { char *p = (char *)malloc(100); printf("%d\n",p); strcpy(p,"hello"); Test1(&p); //通过n+1级指针直接更改指向的内存空间 printf("T1 修改后的值 %s\n ",p); Test2(p); //通过同级指针更改内容 printf("T2 修改后的值 %s\n ",p); system("pause"); return 0; } 上述代码中有两个函数,其中Test1直接通过n+1级指针修改了p所指向的内存空间,而Test2只是修改了p所指向内存空间的内容。它们都能够修改p的内容,但是相对于test2而言,test1更为彻底。当然,具体选用那种方式,还是要根据实际的项目需求来定。 指针 http://www.makeru.com.cn/live/1392_238.html?s=45051 指针换装你还认识吗 http://www.makeru.com.cn/live/5413_2043.html?s=45051 C语言控制led灯 http://www.makeru.com.cn/live/1392_304.html?s=45051 输入和输出 http://www.makeru.com.cn/live/1758_312.html?s=45051 可以加入学习交流群来一起学习交流 【 943552345 】 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |