第2个回答 2015-09-19
虽然,数组和指针,数组名理解为一维指针,二维数组名理解为二维指针,但是很多情况下不是通用的,这就是(潜在的)规定,记住就好,用到的时候调试一下就行,平时理解了就行,也别太深究。如果有人非的得拿这个出题,那的确很无聊了。
而且如果是这种很有争议性的原则,有的还是ASCI标准不明确的部分,一般也是实际中很少用到的,即使是非用不可的地方,为了程序的安全性和可移植性也会用其他方案来避免这种奇异点。
下面就 你说的做了一些试验 注释部分为编译不通过的,相邻的为有比较性的。
////////////////// DEV C++ 下调试通过,
#include
int main()
{
char* s1 = "string";
s1 = "other";
char s2[] = "string";
//s2 = "other";
char* s11[2] = {"string","string2"};
s11[0] = "other";
int a[] = {1,2,3,4};
char s12[2][20] = {"string","string2"};
//char s13[2][] = {"string","string2"};
//s12[0] = "other";
//s13[0] = {"other"};
system("pause");
return 0;
}