黑马程序员技术交流社区
标题:
关于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