01
#include "stdio.h"
int main(int argc, char **argv)
{
unsigned int a = 10;
unsigned int *p = NULL;
p = &a;
printf( "&a=%d\n",a);
printf("&a=%d\n",&a);
*p = 20;
printf( "a=%d\n",a);
return 0;
}
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-465d8bb2660e4698dc584f4185d234cf.png&pos_id=img-0nYbO27L-1715733517080%29)
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-f527e2da85cdcdd46dc5c7b886f22b83.png&pos_id=img-MKwOIX0M-1715733532167%29)
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-ddd27629b9aec87ea9aedf445a72e1e3.png&pos_id=img-avBxtTlA-1715733548981%29)
&p
是指针的地址,用来存放指针
p
,而指针
p
来存放变量
a
的地址,也就是
&a
,还有一个*p在C语言中是解引,意思是告诉编译器取出该地址存放的内容。
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-1b1d17c5b10680a9babd772161ff4c97.png&pos_id=img-yO1rAtZc-1715733565425%29)
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-ac63390919db034b2a1ed68e43e9c199.png&pos_id=img-ocqLtmDJ-1715733583481%29)
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-7d7d6c82ed8bf211768b1a74cae7c942.png&pos_id=img-KuGwAPpM-1715733599521%29)
p+1
所指向的地址不同,这个递增取决于指针类型所占的内存大小,而对于
((unsigned int)p)+1
。
+1
,这样无论p是何种类型的指针,其结果都是指针所指的地址后一个地址。
unsigned int *p=( unsigned int*)( 6422216);
*p= 125;
02
*(&a)= 125;
*
,这个操作符对于指针有两个不同的意义,当在申明的时候是申明一个指针,而当在使用p指针时是解引操作,解引操作右边是一个地址,这样解引操作的意思就是该地址内存中的数据。这样我们对内存6422216中填入一个数据125就可以使用如下操作:
*( unsigned int*)( 6422216)= 125;
03
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fstatic.mianbaoban-assets.eet-china.com%2Fxinyu-images%2FMBXY-CR-4bbfa866014175694890789a8121fdb3.png&pos_id=img-lckyqb8x-1715733615895%29)
p
是一个结构体指针,p指向的是一个结构体的首地址,而
p->a
可以用来访问结构体中的成员a,当然
p->a
和
*(p)
是相同的。
04
#include