我如何解释声明char * x [5]?

时间:2015-05-21 01:48:43

标签: c arrays pointers declaration

我的教授在网上上传了一些代码,但我发现很难理解这个变量:

char * x[5];

这是否代表5个空格x用于指向字符的指针? 所以如果我要说

x[0]="Apple";

这会有效吗?

2 个答案:

答案 0 :(得分:3)

  

这是否代表5个空格x用于指向字符?

是。检查此问题的一种方法是评估sizeof(x)sizeof(x[0])sizeof(*x[0])。在我的x64机器上,评估为40,8和1的指针长度为8个字节,因此char* x[5]声明了五个指针。

  

x[0]="Apple";会有效吗?

是的,虽然它可能没有达到你的预期。此处,x[0]设置为指向字符串文字,x[1]x[4]的值未定义。请注意,因为"Apple"是一个字符串文字,所以它是只读的;你无法保证能够修改它。

答案 1 :(得分:2)

是的,它是什么,即5个char指针的数组,实际上

x[0] = "Apple";

有效。