在C ++中,如果我这样做:
char myArray[] = {'1','2','3','4','5','6','7','8','9'};
这会分配10个空格吗?最后一个元素是'/ 0'?
怎么样:
char myArray[9] = {'1','2','3','4','5','6','7','8','9'};
在这种情况下我只分配了9个空格吗?这不好吗?
最后,当我这样做时会发生什么:
char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'};
答案 0 :(得分:9)
char myArray[] = {'1','2','3','4','5','6','7','8','9'};
这会分配10个空格吗?最后一个元素是'/ 0'?
没有。 9。
char myArray[9] = {'1','2','3','4','5','6','7','8','9'};
在这种情况下我只分配了9个空格吗?
是
这不好吗?
没有
最后当我做
时会发生什么char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'};
假设你的意思是'\0'
,那就是它的样子。
在任何这些案例中都没有任何魔力 - 你得到的正是你所要求的。
自动空终止是字符串文字:
的用法char myArray1[10] = "123456789";
char myArray2[9] = "123456789"; // won't compile - wrong size
char myArray3[] = "123456789"; // still 10 elements - includes null terminator
答案 1 :(得分:3)
不,在使用字符串文字时,你只会得到尾随NUL
,即:
// Array of 10 bytes
char myArray[] = "123456789";
// same as:
char myArray[] = {'1','2','3','4','5','6','7','8','9','\0'};
答案 2 :(得分:1)
char myArray[] = {'1','2','3','4','5','6','7','8','9'};
这只分配了9个元素。
char myArray[9] = {'1','2','3','4','5','6','7','8','9'};
是的,这一行还分配了9个元素。
char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'};
最后一个应该是'\0'
而不是'/0'
。
你在想什么
char myArray[] = "123456789";
分配10个字符(1为字符串文字末尾的尾随'\0'
)
答案 3 :(得分:1)
char
数组的行为与任何其他数组的行为不同。你期待吗
int x[] = {1,2};
以魔法方式附加0
作为最后一个元素,并使x
有3个元素?
如果你提供的元素较少,那么最后的元素是值初始化的,所以
char myArray[10] = {'1','2','3','4','5','6','7','8','9'};
将以null结尾,但
char myArray[9] = {'1','2','3','4','5','6','7','8','9'};
不是