零基础小白看过来要如何利用指针间接赋值

36 篇文章 0 订阅
24 篇文章 0 订阅

我们都知道,指针是指向一段内存空间的。而这个内存空间也可以存放下一个内存空间的地址,这样一级级的传递下去,就变成了多级指针。在C语言中,多级指针是经常会用到的。

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

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

你能够通过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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值