对于标题中的问题答案是肯定的。如果第一个成员是数组的话,指向的也是数组第一个元素的地址。对于第三个问题,你说的“该指针”不太清楚,我就按我的理解来说:如果指针是指向结构体,那么指针加1的话,指针就会向后移动结构体大小个字节的距离;如果你说的是指向数组第一个元素的指针,那么加1的话,指针会向后移动数组元素大小个字节的距离。下面是我的测试代码,希望能帮到你:
#include
#include
typedef struct MyStruct
{
char c[10];
int i;
}S;
int main()
{
S s;
strcpy(s.c,"hello");
s.i=10;
S *p = &s;
printf("%p\n%p\n",p,&(p->c[0]));
printf("%p\n%p\n",&(p->i),++p);
return 0;
}
是的。
指针加减只和指针定义的类型有关,比如你的结构体100字节,那么指针加1就是指针向后移100字节。 如果对象在内存中是连续存放的,那么+1就是指向了后一个对象。
是的,该指针加1,是指指针指向下一个元素的地址,而不是元素加1!
是的,改指针加1就是指向下一个元素的地址;
应该是第一个元素的地址 吧!加1应该是下一个元素的地址,其实这个可以自己调试试试的!