获取多维数组C中项的长度

时间:2014-09-29 07:05:11

标签: c arrays

我用:

构造一个数组

char *state[] = {"California", "Oregon", "Texas"};

我想得到加利福尼亚的长度应该是10但是当我做sizeof(状态[0])时,它只给我8(我认为这意味着8个字节,因为char的大小是1个字节)。但为什么8而不是10?我仍然能够通过循环状态[0] [i]打印出加利福尼亚的每个字符。

我是C的新手,有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:3)

最简单的解释是sizeof是一个编译时计算表达式。因此,它对字符串的长度一无所知,而字符串的长度基本上是需要在运行时进行评估的。

要获取字符串的长度,请使用strlen。返回字符串 not 的长度,包括隐式空终止符,它告诉C运行时字符串结尾的位置。

另一件事是,在设置字符串数组时使用const char* []是一个好习惯。这强化了未定义行为以修改任何数组内容的事实。

相关问题