Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 字符串作为数组索引_C_Arrays - Fatal编程技术网

C 字符串作为数组索引

C 字符串作为数组索引,c,arrays,C,Arrays,在3[“XOEPHENIX”]中,数组索引是字符数组类型。我们可以用C来做这个吗?数组索引必须是整数,这不是真的吗 3[“xeophenix”]是什么意思 3[“Xeophenix”]相当于“Xeophenix”[3],并将计算为第四个字符,即'p' 通常,a[i]和i[a]是等效的 a[i] = *(a + i) = *(i + a) = i[a] 3[“xoEphenix”]与“xoEphenix”[3]相同,因此它将计算为字符'p' C中的数组语法不过是一种不同的书写方式,*(x+y)

3[“XOEPHENIX”]
中,数组索引是字符数组类型。我们可以用C来做这个吗?数组索引必须是整数,这不是真的吗

3[“xeophenix”]
是什么意思

3[“Xeophenix”]
相当于
“Xeophenix”[3]
,并将计算为第四个字符,即
'p'

通常,
a[i]
i[a]
是等效的

a[i] = *(a + i) = *(i + a) = i[a] 
3[“xoEphenix”]
“xoEphenix”[3]
相同,因此它将计算为字符
'p'

C中的数组语法不过是一种不同的书写方式,
*(x+y)
,其中
x
y
是括号内和括号内的子表达式。由于加法的可交换性,这些子表达式可以在不改变表达式含义的情况下进行交换

因此,
3[“xeophenix”]
被编译为
*(3+“xeophenix”)
,其中字符串衰减为指针,并将
3
添加到该指针,从而导致指向字符串中第四个字符的指针。
*
取消引用此指针,因此此表达式的计算结果为
'P'


“xeophenix”[3]
将编译为
*(“xeophenix”+3)
,您可以看到这将导致相同的结果。

在C中,数组是非常简单的数据结构,具有连续的内存块。因此,它们必须是整数,因为这些索引只不过是内存中地址的偏移量

这是一个奇怪的功能,它名列榜首:另请参见: