C语言指针1-定义

来源:互联网 发布:软件 用户使用报告 编辑:程序博客网 时间:2024/04/30 22:49

指针是一个变量,存储的是另一个变量的地址。

例如,有如下代码:

int a = 3;

int *ptr = &a;//定义一个指向整形的指针,变量前加一个*即为一个指针变量

可以这么理解,定义变量a后,系统为a分配一个大小为sizeof(int)的空间,该空间的地址存放在变量ptr中。

如果printf("%p", ptr);则打印输出0xbfb12000。

用图表示即为:

变量ptr=0xbfb12000, *ptr=3(0xbfb12000空间存储的值), &ptr=ptr变量的地址

 

区分变量与指针变量:

int a;

float b;

double c;

char d;

char e[8];

float *f = &b;

char *g= "abcdefg";

void *h;

其中a,b,c,d,e[0]是普通变量,e是数组的首地址,可看做是一个指针,f,g,h都是指针变量。

变量的地址用取地址符来获取,如&a, &b, &c, &d,&e[0](取e[0]的地址,等于e),&e[7],同样可以&e, &f, &g, &h。

指针的值的获取,用*,如*f则输出变量b的值。

 

指针变量的类型与大小:有

int *a;

float *b;

double *c;

char *d;

void *e;

还有自定义类型,等等

不管什么类型的指针,其所占用的空间大小是一定的,在32位机上,

sizeof(float *)=sizeof(int *)=sizeof(long *)=sizeof(long long *)=sizeof(double *)=sizeof(char *)=4字节。