黑马程序员技术交流社区

标题: 关于C语言二维数组的问题 [打印本页]

作者: ★Joean_Zhou    时间: 2014-5-25 20:52
标题: 关于C语言二维数组的问题
二维数组可以初始化为字符串吗,而且可以用指针定义吗?比如 char *a[][] ={ "like",'''you''};
作者: S捭K阖Y    时间: 2014-5-25 22:05
完全可以
作者: ★Joean_Zhou    时间: 2014-5-25 23:15
S捭K阖Y 发表于 2014-5-25 22:05
完全可以

okok谢谢
作者: 永远不会贬值    时间: 2014-5-25 23:37
可以的,

这里就以三个二维数组的比较来展开讨论:
    (1)、int **Ptr;
    (2)、int *Ptr[ 5 ];
    (3)、int ( *Ptr )[ 5 ];
    以上三例都是整数的二维数组,都可以用形如 Ptr[ 1 ][ 1 ] 的
方式访问其内容;但它们的差别却是很大的:
       (1)、int **Ptr 表示指向"一群"指向整数的指针的指针。
       (2)、int *Ptr[ 5 ] 表示指向 5 个指向整数的指针的指针。
       (3)、int ( *Ptr )[ 5 ] 表示指向"一群"指向 5 个整数数
组的指针的指针。
作者: 大龄产妇    时间: 2014-5-26 14:10
指针定义,是定义字符串常量,是不可更改的。
数组定义,是定义的字符串变量,值是可以更改的。
二维数组初始化的时候,不可以省略第二个[ ] 中的一维数组个数。所以从这个角度,我的结论是不可以这样初始化,和是不是由指针定义无关。
你的问题可以这么回答,指针是可以定义二维数组,并且定义的是数组常量(不可更改),但是二维数组第二个小括号中的元素个数不可以省略。
你举的:char *a[][] ={ "like",'''you''}; 这个例子,中间有问题,'''you''引号多了。
作者: 夏沫的黄昏′    时间: 2014-5-26 22:35
你定义的是三维数组 二维数组应该这样定义 char **a = new char*[5];     const char *b[3] = {"oh","no"};     char c[2][5] = {"I","test"};  指针的话应该先分配地址 。。额 我是按照c++的写法  不过c也可以编译成功




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2