user-0 提问: 数组char A[3][7]的另一种表示方式

回复:
user: user-1
content: 不要使用二维以上的数组，一维数组就够用了，越多维越恶心

user: user-2
content: 字符串初始化，sizeof, &取地

user: user-0
content: 引用 24 楼 fengidri 的回复:当然我没有说数组名是针指，这两者有着根本性的区别 哪三种例外，可以说下吗？

user: user-3
content: 引用 3 楼 max_min_ 的回复:char A[3*7];  不推荐  char *A[3];  这已经是最好的表达方式了。LZ。

user: user-0
content: 引用 27 楼 a627088424 的回复:[quote=引用 26 楼 a627088424 的回复:] [quote=引用 23 楼 fengidri 的回复:] 这个说起来是个比较大的问题。 对数组在做右值，以及大都的情况下（有三种例外），数组名是做为指针在起作用。   [] 是一个取下操作,取下操作要求的是一个整数与一个指向类型T的指针，结束是的类型是T。  A[3]在编译时是处理成*(A+3)的。  如同+一样，[]取下操作也只是一个运算，它并不关心操作数的先后，3+5与5+3有什么区别吗？ A[3]与3[A],在编译时都是*(A+3)当然后者是*(3+A）呵呵 突然在哪本书上，想起来了，好像是可以这样子[/quote] 可以这样应用，但定义这样，骗不过编译器[/quote] 这样的话，好像就不符合题意了

user: user-0
content: 引用 26 楼 a627088424 的回复:[quote=引用 23 楼 fengidri 的回复:] 这个说起来是个比较大的问题。 对数组在做右值，以及大都的情况下（有三种例外），数组名是做为指针在起作用。   [] 是一个取下操作,取下操作要求的是一个整数与一个指向类型T的指针，结束是的类型是T。  A[3]在编译时是处理成*(A+3)的。  如同+一样，[]取下操作也只是一个运算，它并不关心操作数的先后，3+5与5+3有什么区别吗？ A[3]与3[A],在编译时都是*(A+3)当然后者是*(3+A）呵呵 突然在哪本书上，想起来了，好像是可以这样子[/quote] 可以这样应用，但定义这样，骗不过编译器

user: user-0
content: 引用 23 楼 fengidri 的回复:这个说起来是个比较大的问题。 对数组在做右值，以及大都的情况下（有三种例外），数组名是做为指针在起作用。   [] 是一个取下操作,取下操作要求的是一个整数与一个指向类型T的指针，结束是的类型是T。  A[3]在编译时是处理成*(A+3)的。  如同+一样，[]取下操作也只是一个运算，它并不关心操作数的先后，3+5与5+3有什么区别吗？ A[3]与3[A],在编译时都是*(A+3)当然后者是*(3+A）呵呵 突然在哪本书上，想起来了，好像是可以这样子

user: user-2
content: 打错了，是"指针“,为什么不能修改我发的回复？

user: user-2
content: 当然我没有说数组名是针指，这两者有着根本性的区别

user: user-2
content: 这个说起来是个比较大的问题。 对数组在做右值，以及大都的情况下（有三种例外），数组名是做为指针在起作用。   [] 是一个取下操作,取下操作要求的是一个整数与一个指向类型T的指针，结束是的类型是T。  A[3]在编译时是处理成*(A+3)的。  如同+一样，[]取下操作也只是一个运算，它并不关心操作数的先后，3+5与5+3有什么区别吗？ A[3]与3[A],在编译时都是*(A+3)当然后者是*(3+A）呵呵

user: user-0
content: 引用 20 楼 fengidri 的回复:引用 16 楼 u010131960 的回复:[quote=引用 8 楼 fengidri 的回复:] 3[a][7]感觉这是装逼的写法  怎么说呢！这是有一些！ 但是这是C标准提供的，完全合符C语法的一种写法，但是由于在理解上的问题，我们并不希望在实际中使用，但是了解这样写可以让你知道C在实现数组上的本质。[/quote] 第一次看到这个写法3[a][7]，求解释，必大谢

user: user-2
content: 引用 16 楼 u010131960 的回复:引用 8 楼 fengidri 的回复:3[a][7]感觉这是装逼的写法  怎么说呢！这是有一些！ 但是这是C标准提供的，完全合符C语法的一种写法，但是由于在理解上的问题，我们并不希望在实际中使用，但是了解这样写可以让你知道C在实现数组上的本质。

user: user-4
content: 引用 21 楼 a627088424 的回复:第一次看到这个写法3[a][7]，求解释，必大谢 看9L的博客

user: user-5
content: 哦哦，类型错误，手残了。指针数组是比较好的解决方案。就是不知道我那种写法是否可以强制类型转换，然后，就可以使用数组指针了。

user: user-5
content: char (*p)[7]; char pp[21]; p = pp;

user: user-0
content: 引用 15 楼 my_live_123 的回复:[quote=引用 14 楼 a627088424 的回复:] [quote=引用 13 楼 a627088424 的回复:] [quote=引用 12 楼 max_min_ 的回复:] [quote=引用 4 楼 a627088424 的回复:] [quote=引用 3 楼 max_min_ 的回复:] char A[3*7];  不推荐  char *A[3]; 第一种，在引用的时候，会失去二维的本意吧 我的第一感觉是 第二种。求更好的答案[/quote] 第二种 char *a[3] 和 a[3][7]差别更多的 qing[/quote]  好吧，能给我讲讲他们的底层机制吗[/quote]  编译器 详细处理过程[/quote] 前者指针数组，后者二维数组，肯定不一样性质了。[/quote] 符号表，也是不同的

user: user-6
content: 引用 8 楼 fengidri 的回复:3[a][7]感觉这是装逼的写法

user: user-7
content: 引用 14 楼 a627088424 的回复:[quote=引用 13 楼 a627088424 的回复:] [quote=引用 12 楼 max_min_ 的回复:] [quote=引用 4 楼 a627088424 的回复:] [quote=引用 3 楼 max_min_ 的回复:] char A[3*7];  不推荐  char *A[3]; 第一种，在引用的时候，会失去二维的本意吧 我的第一感觉是 第二种。求更好的答案[/quote] 第二种 char *a[3] 和 a[3][7]差别更多的 qing[/quote]  好吧，能给我讲讲他们的底层机制吗[/quote]  编译器 详细处理过程[/quote] 前者指针数组，后者二维数组，肯定不一样性质了。

user: user-0
content: 引用 3 楼 max_min_ 的回复:char A[3*7];  不推荐  char *A[3]; 第一种，在引用的时候，会失去二维的本意吧 我的第一感觉是 第二种。求更好的答案

user: user-0
content: 引用 13 楼 a627088424 的回复:[quote=引用 12 楼 max_min_ 的回复:] [quote=引用 4 楼 a627088424 的回复:] [quote=引用 3 楼 max_min_ 的回复:] char A[3*7];  不推荐  char *A[3]; 第一种，在引用的时候，会失去二维的本意吧 我的第一感觉是 第二种。求更好的答案[/quote] 第二种 char *a[3] 和 a[3][7]差别更多的 qing[/quote]  好吧，能给我讲讲他们的底层机制吗[/quote]  编译器 详细处理过程