A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ★Joean_Zhou 中级黑马   /  2014-5-25 20:52  /  1410 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

二维数组可以初始化为字符串吗,而且可以用指针定义吗?比如 char *a[][] ={ "like",'''you''};

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1 1

查看全部评分

5 个回复

倒序浏览
完全可以
回复 使用道具 举报

okok谢谢
回复 使用道具 举报
可以的,

这里就以三个二维数组的比较来展开讨论:
    (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 个整数数
组的指针的指针。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
指针定义,是定义字符串常量,是不可更改的。
数组定义,是定义的字符串变量,值是可以更改的。
二维数组初始化的时候,不可以省略第二个[ ] 中的一维数组个数。所以从这个角度,我的结论是不可以这样初始化,和是不是由指针定义无关。
你的问题可以这么回答,指针是可以定义二维数组,并且定义的是数组常量(不可更改),但是二维数组第二个小括号中的元素个数不可以省略。
你举的:char *a[][] ={ "like",'''you''}; 这个例子,中间有问题,'''you''引号多了。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
你定义的是三维数组 二维数组应该这样定义 char **a = new char*[5];     const char *b[3] = {"oh","no"};     char c[2][5] = {"I","test"};  指针的话应该先分配地址 。。额 我是按照c++的写法  不过c也可以编译成功
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马