C 编程:为什么这个样行在数组末尾不能'0' OR ''字符?

  • 本文关键字:不能 OR 字符 数组 编程 arrays c null
  • 更新时间 :
  • 英文 :


我还是一个C编程新手。

我听说字符串总是以"0"或"\0"作为最后一个字符。

那么我有一个问题。为什么下面的采样线在最后一个位置有"5"?

为什么不是"0"或"\0"?

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };

上面的行来自如何将数组的所有成员初始化为相同的值?

char cArr1[] = {'a', 'b', 'c'};
char cArr2[] = "def";
int iArr3[] = {1, 2, 3};
int iArr4[5] = {1, 2, 3};
memory layout
=============
var name    memory address    value
cArr1       AAAA0000          'a'
AAAA0001          'b'
AAAA0002          'c'
AAAA0003          unknown (may have a '' by chance)
...
cArr2       BBBB0000          'd'
BBBB0001          'e'
BBBB0002          'f'
BBBB0003          '' is inserted by the compiler
...
iArr3       CCCC0000          1
CCCC0004          2
CCCC0008          3
CCCC000C          unknown (may have any value)
...
iArr4       DDDD0000          1
DDDD0004          2
DDDD0008          3
DDDD000C          0 (not defined explicitly; initialized to 0)
DDDD0010          0 (not defined explicitly; initialized to 0)
...
字符串是字符数组,其实际元素以零字符结尾。大多数标准的C字符串函数都遵循这个约定。

这个

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };

是一个整数数组。零是一个有效的整数值。在其他整数值中,它经常被用作数组的实际值。

当然,您可以将零设为整数数组的哨值。但是没有标准的C函数使用零作为整数数组的前哨值。

">为什么这个采样行在数组末尾不能有0''字符";

因为myArrayint的数组(不包含字符串(!空终止符(用于字符串(只能应用于char,而不能应用于int数组。

即使是char的数组本身也不是null终止符。只有当char的数组应该包含字符串并且您想将数组的内容用作字符串时,才需要null终止符。

除此之外,int的数组当然可以在最后一个元素中包含int0,但您目前在这里混合了两种不同的东西。

相关内容

最新更新