论坛首页 综合技术论坛

c语言如何利用指针间接赋值

浏览 4556 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2020-12-17  
我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到的。

多级指针像一把双刃剑,有利也有弊。你能够用它完成一些奇淫技巧,也会遇到一些不可捉摸的错误。

其中,指针有一个非常重要的作用:间接赋值。

你能够通过n级指针去修改n-1级指针的内容,甚至直接修改指针所指向的内存空间

例如:

你在main函数里面声明了一个字符串指针,然后你想通过调用一个外部函数来修改它。这个时候,你就可以将这个字符串指针的地址传递给函数。这样,函数的参数就是一个二级指针了,通过这个二级指针,你可以很方便的修改字符串的内容。

代码如下:

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>intTest1(char**p1){char*temp=(char*)malloc(50);strcpy(temp,"hey!");//间接赋值*p1=temp;//更改指针所指向的内存空间printf("T1 %d\n",*p1);//打印出地址}intTest2(char*p2){strcpy(p2,"goodBy!");printf("T2 %d\n",p2);//打印出地址 ,会发现和实参的地址一样}//间接赋值//利用n级指针 改变n-1级指针的值intmain(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");return0;}

上述代码中有两个函数,其中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

如何编写生活中的C语言

http://www.makeru.com.cn/live/5413_2649.html?s=45051
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics