C语言 sizeof问题

mmkkyytt 发布于 2011/06/29 23:08
阅读 631
收藏 1

temp是自定义的一个结构体,data是结构体的char指针字段,指向数组的首地址,现在我想求出char数组的长度,为什么下面的计算结构都是4

sizeof(temp->data)/sizeof((temp->data)[0])

加载中
0
SunRunAway
SunRunAway

sizeof(temp->data) = sizeof(char*) = 4

sizeof((temp->data)[0]) = sizeof(char)) = 1

0
abing_hu
abing_hu
楼上正解。
0
liuyan
liuyan
这样就没法求了,指针和数组名是有区别的,再建个字段存长度好了
0
0
pizigou
pizigou
指针长度是4 Byte ,char 的长度为1 Byte。
0
Lunar_Lin
Lunar_Lin
数组名的长度是编译器期获得的,你没办法保存一个数组名 能在运行时获得数组的长度,增加一个额外的字段来保存吧.
0
mmkkyytt
mmkkyytt
嗯,大概知道了,最后是用strlen来求了,C语言还是不大熟悉
0
智勇
智勇

不要用char指针,要不用string存字符数组的内容用strlen求长度

mmkkyytt
mmkkyytt
因为是纯C写的所以没用string
0
梦飞翔宇内
梦飞翔宇内
指针在32位机上占4个字节,char型占1个字节。

sizeof(temp->data) = sizeof(char*) = 4

sizeof((temp->data)[0]) = sizeof(char)) = 1

返回顶部
顶部