中括号的含义昨天提问题,发现中括号好象有很多含意int *arr = new int[2];arr[0] = 2;//这时候[]可以当*使用吗?q["123"+2] = 3;2["123"] = 3;*("123"+2) = 3;这三句怎么理解呢?字符串的转译是怎么样的呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 18:26:45

中括号的含义昨天提问题,发现中括号好象有很多含意int *arr = new int[2];arr[0] = 2;//这时候[]可以当*使用吗?q["123"+2] = 3;2["123"] = 3;*("123"+2) = 3;这三句怎么理解呢?字符串的转译是怎么样的呢?
中括号的含义
昨天提问题,发现中括号好象有很多含意
int *arr = new int[2];
arr[0] = 2;//这时候[]可以当*使用吗?
q["123"+2] = 3;
2["123"] = 3;
*("123"+2) = 3;
这三句怎么理解呢?
字符串的转译是怎么样的呢?

中括号的含义昨天提问题,发现中括号好象有很多含意int *arr = new int[2];arr[0] = 2;//这时候[]可以当*使用吗?q["123"+2] = 3;2["123"] = 3;*("123"+2) = 3;这三句怎么理解呢?字符串的转译是怎么样的呢?
a[b]总是会被编译器转译为*(a+b),所以a[2]与2[a]其实是完全相同的.
所以arr[0]就是*arr.
不过后面的三个例子有点诡异,"123"是常量,是不能修改其内容的.
但可以看下面的例子帮助理
char a[] = "123";
*(a+1) = '3';
//1[a] = '3';
//0[a+1] = '3';
printf("%s\n",a);
中间的三句无论使用哪一句,都可以得到输出133的结果.