@关于C语言指针的理解及应用(相邻指针之差为1)
c语言中,如果定义指针变量,无论所指向的结构体的大小为多少,相邻指针变量之间的差为1;
例如:定义结构体
typedef struct {
bitree data[50];
int top;
}stack;
我们设置指针变量m和q,m和q相邻,则m和q的差为1;
stack *m;
stack *q;
q=m+1;
printf("oo:%ld %d %d\n",(q-m),&q,&m);
查看结果为
由于我用的是32位操作系统,所以&q和&m之间的差为4字节(表示地址长度)。如果换为char类型,所得结果一样的:
char *m;
char *q;
q=m+1;
printf("oo:%ld %d %d\n",(q-m),&q,&m);
所以我们在运用c语言过程中,尤其是在处理字符串变量的时候,运用指针是一种很快捷的方法。例如:
char pre[]={'a','b','c','d'}
printf("%c",*(pre+1));
这样就可以直接把‘b’输出。