2013-12-08 116 views
1

问题是:声明一个大小为2的“char”类型的数组,称为“字母”。将变量“alpha”指定为数组“字母”的第一个元素。C赋值数组错误

我都尝试:

char letters[1]; 
letters = alpha; 

char letters[] = {alpha}; 

程序口口声声说这两个答案都是错的。我究竟做错了什么?或者是检查系统出错?

+1

是阿尔法单个字符?使用'letters [0] = alpha;' – edwardmp

+1

您似乎误解了从零*计数的应用程序*设置数组的大小。在一些参考资料中阅读关于数组的介绍性章节是一个好主意。 – dmckee

回答

2

在第一个例子你是不是定义大小2,但大小1,和数组(这是实际的错误),您是分配char类型的变量数组,而不是数组的位置...

一个简单的方法:

char letters[2]; // array of size 2 
char alpha = letters[0]; // assigning the first position of letters array to the alpha variable 
+0

有趣的是:这将'letters'的第一个元素赋值给'alpha',但这个问题在我看来似乎是要求相反的操作(尽管我给你的措辞是模棱两可的 - 但这些尝试肯定意味着相反的):给定'char alpha ='x';'然后通过初始化'char letters [2] = {alpha,'\ 0'};'或者赋值'char letters [2] =“”;字母[0] = alpha;'。 –

1

那么,用一个1而不是2应该会让你失望。如果你想分配一个字母元素,你可能需要说的不仅仅是名字。

2

有在你的答案几个错误:

  • 你错过了“尺寸2”的一部分,
  • 第二次分配有走另一条路,
  • 数组的第一个元素处于索引零。

您需要添加初始化,以避免不确定的行为:

char letters[2] = {'x', 'y'}; 
char alpha = letters[0];