这应该算是题主定义了一个无主结构体指针变量p,因为这个结构体没有名称,所以应该可以认为是无主结构体,如果没有指定变量的话,这种定义是无意义的,如果题主这样写:“struct{int len;char *str;}*p,note;”,无主结构体就又有意义了,这相当于定义了一个结构体全局变量note和一个结构体全局指针变量p,note是有明确空间的,你可以直接使用该结构体变量,也可以使用“p=¬e”语句使用指针操作结构体,用如下代码试验就可知道“p->str++;”是加到哪里了:
程序代码:
#include <stdio.h>
struct {int len;char *str;}*p,note;
void main()
{
p=¬e;
printf("%x\n",p->str);
p->str++;
printf("%x\n",p->str);
}
输出结果为:0 1(全局变量会自动初始化为0),这样做不明显,看不出来是不是指针自增,把结构体改成“struct {int len;int *str;}*p,note;”,输出结果就是0 4,只有指针才会根据指针指向的变量类型所占用的字节数来做自增的,普通变量自增只是加1。
[此贴子已经被作者于2017-1-3 13:52编辑过]