要理解C语言代码中指针的意思,最好的方法就是画表。
先从最简单的代码开始,用画表来分析。
例1
#include "studio.h"
int main( void ) {
int a = 0x00;
int * ptr = &a;
printf( "0x%X\n", ptr );
printf( "0x%X\n", &a );
printf( "0x%X\n", *ptr );
printf( "0x%X\n", a );
}
可以这样画表:
因为0x1000地址里存放的变量a是int类型,所以指向变量a的指针类型是int *。同理,如果变量a的类型是unsigned char,则指向变量a的指针类型应该是unsigned char *。
例2
数组,或者结构体,名字就是指针。
#include "studio.h"
typedef struct {
int a;
} STRUCT1;
STRUCT1 struct1 = { 1 };
int array[3] = { 1, 2, 3 };
int main( void ) {
int a = 0x00;
int * ptr = &a
printf( "0x%X\n", ptr );
printf( "0x%X\n", &a );
printf( "0x%X\n", *ptr );
printf( "0x%X\n", a );
}