先说结论
对一级指针取地址运算就是就相当于二级指针
#include<stdio.h>
void func(int** a, int** b)
{
static int x = 100;
static int y = 200;
*a = &x;
*b = &y;
}
int main()
{
int* a = NULL;
int* b = NULL;
func(&a, &b);
if (a != NULL && b != NULL)
printf("a=%d b=%d\n", *a, *b);
return 0;
}
分析一下代码运行过程
首先代码中main函数声明了两个一级指针a和b,在调用函数fun的时候,对一级指针取地址运算,生成两个二级指针实参,也验证了定义函数中的形参类型;
实参传入之后,对传入参数取值运算,也就是将&a,&b二级指针降为一级指针,同时对x,y取值运算生成x,y的一级指针,两边指针类型一致进行赋值运算(注意定义函数中的是形参,与实参无关,二者相互独立)
将x,y的地址赋给a,b的一级指针之后,再对一级指针a取值运算(*a),就可以顺利得到x,y的值了;
本文仅用于帮助理解指针中的一些问题,有不妥请各位大佬多多指出。
标签:一级,运算,int,指针,地址,实参,NULL,变量 来源: https://blog.csdn.net/weixin_63676550/article/details/122811308
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。