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

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 07:46:03
中括号的含义昨天提问题,发现中括号好象有很多含意int *arr = new int[2];arr[0] = 2;//这时候[]可以当*使用吗?q[
xSnPTYBɇ^UAԩ-J«؈J$`HUg\5DJm]Ιsf|g YJƬ>=j=KiyziLy0ݛs֫ ]԰#um(jZi(]KYRȻ bRZuP ݊Q{ 0ᤔ %JKAȦ%NtVu 4{06WJ&kO;i#9/ֹq7!p$8Gd±ûXf׫PŠ le_;ˏȆ0Q2Ex.*Z?UE74$YUt ) :D8щ: $6]Whx(@ \U9,_@WQyhӵNfr Nj@^f: Ă'>j!U3;K'`wR;"I4 H|XP32\ky%Eޜʄ]2OR(s-vKd7 ť

中括号的含义昨天提问题,发现中括号好象有很多含意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的结果.