【发布时间】:2014-09-29 15:07:24
【问题描述】:
我构造了一个数组:
char *state[] = {"California", "Oregon", "Texas"};
我想得到应该是 10 的加利福尼亚的长度,但是当我执行 sizeof(state[0]) 时,它只给了我 8(我认为这意味着 8 个字节,因为 char 的大小是 1 个字节)。但是为什么是 8 而不是 10?我仍然可以通过遍历 state[0][i] 打印出加利福尼亚的每个字符。
我是 C 新手,有人可以向我解释一下吗?
【问题讨论】:
-
使用
strlen。 -
使用
strlen,而不是sizeof。 -
state[0]不是字符串,而是字符指针。sizeof给出内存中变量的大小,在这种情况下为 8 个字节(如果 state[0] 是一个整数,它将返回 4)。 C 没有字符串长度的概念,唯一找到它的方法是遍历数组,直到遇到字符\0(C 中的所有字符串通常都以此字符结尾) -
检查一下系统中的指针大小。有可能8是指针大小。