结构体指针p加1后为什么结构体会变长

作者&投稿:能豪 (若有异议请与网页底部的电邮联系)
struct结构体指针 *p的大小为什么是整个结构体的大小~

p是指向struct A类型的结构体首地址 ,*p就是结构体的内容

如果px+1的下一个地址仍然是该结构体的变量实例,那么应该不会出错,如果下一个位置是其它类型的变量,应该就会报错,“C和指针”里说的应该是这个意思。“c prime plus”里面应该是默认了下一个位置还是这种结构体的变量.


结构
(1) [structure]∶组成整体的各部分的搭配和安排
经济结构
(2) [fabric]∶建筑物承重部分的构造
复合结构
(3) [build]∶构筑;建造
(4) [collude with]∶勾结

你说的情况是p没有指向struct student 类型的变量,而是指向变量中的某一个元素.比如
struct student
{int num;
char name[10];
}stu[10];
struct student *p;
p=(struct studnet *)stu[0].name;
那么执行p+1后的情况吧.
原来的struct student类型的长度是12(2+10);
现在呢,把stu[0].name强制转换成结构体类型,那么stu[0].name就不是10个长度,而应该是一个struct student类型的长度,那么整个struct student 现在的长度就是14(int + struct student),p+1使struct student 类型的长度增加了.p+1应该指向下一个name.

没听过有这说法


C语言-结构体指针及结构体嵌套
在C语言中,结构体是一种复合数据类型,与数组和基本类型相似,允许定义指向该类型对象的指针。结构体指针的声明方式遵循常规类型定义格式,例如:struct 结构体名 * 指针名;例如,定义了一个名为person的结构体,包括姓名(char数组)和年龄(int),同时声明一个指向person的指针p:struct person {char...

c语言结构体函数指针怎么赋值
指针就是指向内存的某个地址的一个变量。结构体指针就是这个指针变量的值必须指向存放该结构体的内存位置。当这个指针没有任何指向时,可以赋值为null值,但是改指针不可使用,程序中应该做判断。下面是一些赋值演示。struct student{ int id;int score;} aaa;struct student *p = null;\/\/结构体指针...

新手向大神请教,指向结构体的指针存放的是结构体第一个成员变量的地址吗...
对于标题中的问题答案是肯定的。如果第一个成员是数组的话,指向的也是数组第一个元素的地址。对于第三个问题,你说的“该指针”不太清楚,我就按我的理解来说:如果指针是指向结构体,那么指针加1的话,指针就会向后移动结构体大小个字节的距离;如果你说的是指向数组第一个元素的指针,那么加1的...

...*(*(p+1)+1)对么。为什么先给p加1再取值 再加一
其中m为行索引,n为列索引,假设数组类型为int。p为指向数组首地址,也是第一行的地址,为二级指针,行指针(指针的指针),其指针类型为int (*)[n],因此 p+m:指向m行的地址,如果m为0,就是第一行地址 (p+m):取m行的首地址(列指针),一级指针,类型为int *, 因此 (p+m)+n:...

指针p p++和++p、p--和--p分别有什么区别???
1、p++ ++p相当于把p指针移动到p指针当前值加上sizeof(t)的位置,比如p=100,sizeof(t)=4,p++或者++p之后p等于104。2、p-- --p相当于把p指针移动到p指针当前值减去sizeof(t)的位置,比如p=100,sizeof(t)=4,p--或者--p之后p等于96。3、其中++或者--在后面,先以p当前位置来计算...

golang语言面试题(golang常见面试题)
假设写入后的文件为A,B,C...10 第二步: 将A,B,C...10的第一个字符拿出来,对这10个字符进行排序,并将结果写入硬盘,同时记录被写入的字符的文件指针P。 第三步: 将刚刚排序好的9个字符再加上从指针P读取到的P+1位数据进行排序,并写入硬盘。 重复二、三步骤。 go文件读写参考: 保证排序前两个相等的...

结构体最后大括号后面跟两个指针
在printf函数中,我们使用了 p->name、p->age 和 p->score 来分别打印出结构体中的姓名、年龄和分数。这些箭头符号 \\"->\\" 表示我们正在访问结构体指针所指向的结构体中的成员。二、指向结构体数组的指针 结构体最后大括号后面也可以跟一个指向结构体数组的指针。这种指针通常用于处理多个结构体,...

C语言,帮忙解释一下什么时候p++是指向下一个字符什么时候是指向下一个...
这个题目中,结构体struct tree变量的构成是:{一个整数,一个字符指针,一个同类结构的指针} 主函数声明的结构指针p首先指向t[0],即结构体{1,字符串"pascal"的首地址,空地址} 语句“s=++p->y;”中,p->y是字符串"pascal"的首地址 ++后,p->y及s变为字符串"ascal"的首地址 所以输出a...

p是一个结构体指针,那->呢?
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。

请问这道关于结构体指针的题目是怎么算?
结构体中声明有错误, 1A不能是变量 sizeof(struct tagABC) = 4 本题根据系统的不同结果也不尽相同, 这儿假设系统是32位的,且char占一个字节(byte),unsigned long 占4个字节 pAbc是struct tagABC类型的指针,所以每次pABC+1时都是加一个struct tagABC大小的值,即要加4 所以pAbc+0x100 =...

普洱哈尼族彝族自治县19440357946: 指向结构体的指针p++和p+1一样吗? -
壹栏贯新: 不一样.1. 值不一样,p++的值等于p的值,而不是p+1的值.2. p++有副作用,会导致p增加1,而p+1没有副作用.

普洱哈尼族彝族自治县19440357946: C语言中++i代表自加1,请高手解释下,为什么如下图程序中(++p) - >a得5? -
壹栏贯新: 指针加减是对指针所指的大小而言的,这里指针加一实际上是对这个结构体的长度加一.那么就移动了两个int长度,指向了s(2)

普洱哈尼族彝族自治县19440357946: c结构体指针加1后,为什么地址不是加1 -
壹栏贯新: C/C++默认指针+1时,为指针地址加上该指针所指类型的大小.望采纳

普洱哈尼族彝族自治县19440357946: 有一个链表,链表中的结构体有3个元素(不是数组),如果一个指针p -
壹栏贯新: 额 ,是链表额,p+1=(char *)p + sizeof(struct xxx); 他不指向下一个结构体,至于他指向的是什么,那估计得看老天爷的了 啥米是结构体的第二元素啊.指针的加法是按照指针类型来的.比如char *p_ch;和int *p_in; p_ch=(char *)p_in; 那么p_in+1==p_ch+4; szieof(char)=1; sizeof(int)=4; 希望你能明白我在说什么呢

普洱哈尼族彝族自治县19440357946: 一个结构指针p指向该类型的结构体数组a的首元素地址,如果要输出a中所有成员的值,有几种方法?请分别 -
壹栏贯新: 1.p++指向s[1],相当于s数组的首地址自增1.2,s[1]的age成员,相当于先自增到s[1],然后去s[1]的age数据.3.s[0]的age数据加个1,相当于先指向首地址的age数据,再在age的数值上自增1.附:++在前,表示先自增后运算.++在后,表示先运算后自增.

普洱哈尼族彝族自治县19440357946: c语言关于指向结构体的指针的理解 -
壹栏贯新: 给你说吧.我说简单点.typedef的用法int a.;在int 前面加上typedef ,把a 改成任意的标识符,如 hh,现在就是typedef int hh;hh m;m就是一个int 的变量了.就像宏定义一样,..你那个按照这样理解就可以了

普洱哈尼族彝族自治县19440357946: c语言中结构体变量成员自加自减后其值会变吗 -
壹栏贯新: 会的 每个变量成员 其实都是一个普通变量 自加自减后 自然会改变值. 比如1 2 3 4 5 6 7 8structA {intm; };structA a; a.m=100; a.m--; 执行后 a.m就是99了.

普洱哈尼族彝族自治县19440357946: 数据结构中结构体中 - >,和.的区别 p - >next和p.next的区别 -
壹栏贯新: -> 左边是结构体指针,右边是结构体成员,因此p->next 的含义是p指针指向结构体变量的next数据域(一般该数据域存放后继结点的地址). 左边是结构...

普洱哈尼族彝族自治县19440357946: printf( %d ,p - >data);什么意思 -
壹栏贯新: p是一个结构体指针,这个结构体的整形成员变量data,就表示为p->data, 如果p是结构体变量,非指针,就要p.data ,这是结构体访问成员的两种形式

普洱哈尼族彝族自治县19440357946: 关于这个回答,我还有一点疑惑:p是指针,但p - >next又是什么?(我还看到书上有的地方有p=p - >next ?) -
壹栏贯新: 看一下你的结构体,可知next是结构体中的一个成员,也是个指针,它的类型就是结构体指针类型.学数据结构、链表对这个应该很清楚next的意义!p是一个结构体指针(它存的是当前结点的位置:内存地址) p->next同样是一个结构体指针!它里面存的就是p所指向的结点的下一个结点的位置!(结合前面说过的)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网