C语言指针入门
”&“ :取址符,即得到变量的实际内存地址。
”*“ :取值符,即把对应地址的内存空间当中的值取出。
例:”*(&b)“的操作是指把该内存地址所存储的内容取出。
所谓指针变量:即存放内存地址的变量。
例:
unsigned char a;
unsigned char *p; //定义了一个无符号字符型的指针变量
a = 3;
p = &a; //将a变量的地址赋给指针变量p,”&a“代表的是变量a的地址
或:
unsigned char *p = &a; //直接赋值
其中unsigned char *p
当中的“p”是声明指针变量的固定格式,不要和单独的“p”弄混了。C语言当中声明指针变量的固定格式就是:type *var_name;
在“p=&a;”当中,p被赋予的值为变量a的内存地址,因此p等于&a等于内存地址。
而printf("%p", p)
当中的“p”代表的则是相应的内存地址,即p等于&a等于内存地址,其中%p特指地址的占位符。
而printf("%d", *p)
当中的“p”代表的是变量a的值,其中“”是取值符,即*p = a = 3