char a[3][8]={"gain","much","strong"};
char *n[3]={"gain","much","strong"};
如果我做这样的定义:
他们在内存的存储方式分别如右图所示,可见,系统给
数组a分配了
3×8的空间,而给n分配的空间则取决于具体字符串的长度。
此外,系统分配给a的空间是连续的,而给n分配的空间则不一定连续。
由此可见,相比于比二维字符
数组,
指针数组有明显的优点:一是指针数组中每个元素所指的字符串不必限制在相同的字符长度;二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。 但是二维字符
数组却可以通过下标很方便的修改某一元素的值,而
指针数组却无法这么做。