新手向大神请教,指向结构体的指针存放的是结构体第一个成员变量的地址吗?

如果第一个成员是数组,则指向的是该数组第一个元素的地址么?如果将该指针加1有什么意义(或者说实用性的价值)呢?希望能针对问题具体回答,请勿复制粘贴!谢谢。。。

对于标题中的问题答案是肯定的。如果第一个成员是数组的话,指向的也是数组第一个元素的地址。对于第三个问题,你说的“该指针”不太清楚,我就按我的理解来说:如果指针是指向结构体,那么指针加1的话,指针就会向后移动结构体大小个字节的距离;如果你说的是指向数组第一个元素的指针,那么加1的话,指针会向后移动数组元素大小个字节的距离。下面是我的测试代码,希望能帮到你:
#include<stdio.h>
#include<string.h>
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-21
是的。
指针加减只和指针定义的类型有关,比如你的结构体100字节,那么指针加1就是指针向后移100字节。 如果对象在内存中是连续存放的,那么+1就是指向了后一个对象。
第2个回答  2012-03-21
是的,该指针加1,是指指针指向下一个元素的地址,而不是元素加1!
第3个回答  2012-03-21
是的,改指针加1就是指向下一个元素的地址;
第4个回答  2012-03-21
应该是第一个元素的地址 吧!加1应该是下一个元素的地址,其实这个可以自己调试试试的!
相似回答