c语言指针闲谈

在c语言中指针说白了就是地址,但和地址又有一定的区别,首先,地址是常量,指针是变量,其他的无区别。

定义一个指针并初始化他:

private int a;

private int * p;

p = &a;

我们来分析一下这三行代码:我们定义了一个变量p,它的类型是 int *,也就是一个int 类型的指针变量,然后  p = &a; 说明把变量a的地址给了变量p,那么这时候:

printf("%p",p),控制台打印出来的是变量a的地址(变量a的地址就是p的值),和printf("%p",&a)是一个意思

printf("%d",*p),控制台打印的是变量a的值(为什么:*p表示对应的地址对应的值)

比如:

int b;

scanf("%d",&b);

第二条语句中&b就表示b在内存中的地址。

再说一下指针和数组:

int a [5] = {};

int *p = &a;

我们都知道单个a表示a[0],那么a[1]用那种方式怎么表示呢:首先a[0] = *p,那么*(p + 1)就表示a[1]了,我们可以这样理解:*(p + 1)太麻烦了,于是有了[]这种形式的写法。





转载于:https://my.oschina.net/gef/blog/545976

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值