研究多重指针的实例分析

#include <stdio.h>

int main(int argc, char *argv[])

{


//定义四个变量


int a=101,b=202,c=303,d=404;


//把四个变量的地址保存到一个数组里面


int *array[4];

array[0]=&a;

array[1]=&b;

array[2]=&c;

array[3]=&d;

    

//以下打印的是四个变量的值和他们的地址

printf("a=%d, &a=%p\n",a,&a);

printf("b=%d, &b=%p\n",b,&b);

printf("c=%d, &c=%p\n",c,&c);

printf("d=%d, &d=%p\n",d,&d);

printf("array=%p\n",array);


printf("array[0]=%p,array[1]=%p,array[2]=%p,array[3]=%p\n",array[0],array[1],array[2],array[3]);

    

int **p;

p=array;

printf("p=%p\n",p);

printf("*p=%p\n",*p);

printf("*(p+1)=%p\n",*(p+1));

printf("*(p+2)=%p\n",*(p+2));

printf("*(p+3)=%p\n",*(p+3));

    

printf("**p=%d\n",**p);

printf("**(p+1)=%d\n",**(p+1));

printf("**(p+2)=%d\n",**(p+2));

printf("**(p+3)=%d\n",**(p+3));

    

return 0;

}

*******************************************

这个例子让我明白,如果int **p;的话,*p和p必然是地址,类似0x123123,**p那必然是整形数。

再举个例子,p=0x12312,&p是p这个存储着地址的变量的地址,*p是指0x12312所指的地址所储存的值。

就是要搞明白四个值的意思:


p,&p,*p,**p以及能够成为*的前提是p里面存的值。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值