printf("%c",3["abcde"]);
Run Code Online (Sandbox Code Playgroud)
该语句如何产生输出d?编译器如何执行此语句?我理解为一个int数组,其中a[5]= 5[a]since *(a+5)= *(5+a).但是这里的字符串充当除字符串名称(变量名称)之外的索引.
在你的情况下
printf("%c",3["abcde"]);
Run Code Online (Sandbox Code Playgroud)
可以读作
printf("%c","abcde"[3]);
Run Code Online (Sandbox Code Playgroud)
或者,作为我们最熟悉的语法,
char p [] = "abcde";
printf("%c",p[3]);
Run Code Online (Sandbox Code Playgroud)
它基本上归结为访问数组索引3中的元素(C使用基于0的数组索引).
这只是数组索引的语法糖.你可以用任何你喜欢的方式.
如果您想挖掘更多以便更好地理解,您可以查看此问题和相关答案.
注意:被Nitpicky
你的代码片段是一个声明,不要称之为程序.
数组访问器运算符[]可以"双向"工作,因此3["abcde"]相当于"abcde"[3]和索引3(0为开头)包含d.
编辑:
我们有一个字符串常量而不是变量这一事实并不重要.字符串常量存储在内存的只读部分中,并隐式输入const char *.所以以下内容相当于您发布的内容:
const char *str = "abcde";
printf("%c",3[str]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |