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中,数组是非常简单的数据结构,具有连续的内存块。因此,它们必须是整数,因为这些索引只不过是内存中地址的偏移量 这是一个奇怪的功能,它名列榜首:另请参见: