c语言数组未定义的会默认为什么,c - 为什么“字符数组”需要两个“ []”,而一个“整数数组”需要一个“ []”? - 堆栈内存溢出...

...不管那个问题的答案。

为什么没有[]中的2个?

语义可能会影响您对数组及其索引要求的理解。 C有一个用于int和char数组,每个数组都需要一组[]来定义。 C有一种特殊的char数组,通常称为C String ,它只是一个常规char数组,最后一个字符为空终止符: \\0 。 C strings数组通常确实使用两组括号: [][] 。 用于表示规则char阵列是相同的那些用于表示int阵列。 两者都可以描述为存储在连续的一组存储位置中的值的集合。 为了说明,示例int , char和C string数组如下:

int numarr[] = {99,104,97,114,32,97,114,114,97,121,0};

char chararr1[] = {'c','h','a','r',' ','a','r','r','a','y','\0'};

char chararr2[] = {99,104,97,114,32,97,114,114,97,121,0};

char string[] = {"char array"};

上面四个示例中的每个数组值都是相同的。 在大多数实现中, int数组存储在一个连续的4字节存储位置集中,而每个char数组存储在一个连续的1字节的存储位置集中。 这三个char数组(如果在printf()使用printf()将导致相同的字符串输出,因为每个都是以null值终止的char数组。

printf("%s\n%s\n%s\n", chararr1, chararr2, string);

字符数组

字符数组

字符数组

更多关于特殊char阵列- C字符串 ,和C字符串数组

char string[] = {"this is a string"};

C字符串定义为char的空终止数组: ^之间标记的内容是上面定义的string 。 注意空终止。

|t|h|i|s| |i|s| |a| |s|t|r|i|n|g|\0|?|?|

^ ^

但是,可以使用两组方括号来表示一组连续的C字符串或C字符串数组 :

char strings[2][20] = {"first string", "second string"};

此字符串数组在内存中将如下所示:

|f|i|r|s|t| |s|t|r|i|n|g|\0|s|e|c|o|n|d| |s|t|r|i|n|g|\0|?|?|?|

| | | |

[0] | | [1] 1st index used to access full string

[0][4]='t' [0][10]='n' 2nd index used to access array elements

虽然可以使用第一个索引访问每个字符串,

eg. strings[0] = "first string" and strings[1] = "second string"

每个字符串的每个字符都可以使用第一个索引和第二个索引进行访问

eg. strings[0][0] == 'f' and strings[1][0] == 's'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值