我聲明在我的C下面的結構++程序:不同數據類型的sizeof(datatype_pointer)/ sizeof(datatype)的不同值爲什麼?
struct person {
char name[10]; /* first name */
char id[10]; /* ID number */
off_t pos; /* position in file, for demonstration */
} people[] = {
{ "arnold", "123456789", 0 },
{ "miriam", "987654321", 10240 },
{ "joe", "192837465", 81920 },
};
j = sizeof(people)/sizeof(people[0]); /* count of elements */
給出J = 3這裏,即,沒有在數組中的元素;始終即使您添加或減少元素...
但
char b[8];
i = sizeof(b)/sizeof(b[0]);
給我的價值=常數= 4我的機器上。
現在這就是合理的的sizeof(字符*)是我的機器和的sizeof(char)的太是恆定的恆..
但只要我宣佈結構的人情況下,sizeof(人*)和sizeof(人)也應該是不變的,它也應該產生一個常數值,不是嗎?
我不相信'char'變種總是給你4 ...(http://ideone.com/eeniL) – 2012-03-08 14:14:00
它在我的機器上給出4,我執行了代碼。 sizeof(char *)取決於在我的機器上容納地址所需的字節,sizeof(char)總是爲1,不是。所以,它需要4 * sizeof(char)來容納我的機器上的地址... – bhuwansahni 2012-03-08 14:18:20
這篇文章是爲什麼人們應該發佈完整程序而不是代碼片段的一個很好的例子。請發佈最短的完整程序來演示您的問題。 http://sscce.org – 2012-03-08 14:19:19