鱼C论坛

 找回密码
 立即注册
查看: 3522|回复: 21

这种数组声明并赋初值等价于什么?

[复制链接]
发表于 2015-8-21 15:46:51 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
int main(void)
{        char *s[ ]={"one","two","three"},*p;
        p=s[1];
        printf("%c,%s\n",*(p+1),s[0]);
}
char *s[]={"one","two","tree"};
可不可以写成char s[3][ ]={"tone","two","three"};
可数组不是不能对二维进行省略么?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-21 15:56:34 | 显示全部楼层
不可以, char *s[] ,里面的内容是字符串,而char s[3][3 ]里面的内容是字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-28 13:17:52 | 显示全部楼层
可以省略,不过是省略前面的数字:
char[][3]={{"tone","two","three"}};
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-28 17:12:24 | 显示全部楼层
狼之道 发表于 2015-8-28 13:17
可以省略,不过是省略前面的数字:
char[][3]={{"tone","two","three"}};

这样写应该不对吧。里面存的字符。你给是字符串。你在程序中试过吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-29 12:59:21 | 显示全部楼层
yjip267 发表于 2015-8-28 17:12
这样写应该不对吧。里面存的字符。你给是字符串。你在程序中试过吗?

不好意思写错了,应该是char a[][10]={"tone","two","three"}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-29 13:54:52 | 显示全部楼层
本帖最后由 Delta 于 2015-8-29 13:56 编辑

可以省略的只是第一维长度,如char s[][5] = { "tone", "two", "three" }
字符串也是一种数组哦
#include <stdio.h>
int main(void)
{
        char s[][7] = { "tone", "two", "three" },*p;
        p = s[1];
        printf("%c,%s\n", *(p + 1), s[0]);
}
再说了,定义指向数组的指针本来就是为了省空间,何必呢?:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-29 16:38:53 | 显示全部楼层
个人觉得还是不支持这 char s[][7] 这种定义。这样比较好一点char *s[ ];字符可以任意长度的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-29 20:44:02 | 显示全部楼层
yjip267 发表于 2015-8-29 16:38
个人觉得还是不支持这 char s[][7] 这种定义。这样比较好一点char *s[ ];字符可以任意长度的。

就是说char *s[]和char s[][7]的作用都是定义一个二维字符数组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-30 11:22:07 | 显示全部楼层
可以这么说。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-2 15:48:46 | 显示全部楼层
如果要省略的话也只能省略前面的那个,比如是s[][3];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-19 21:50:59 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-21 15:40:24 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-24 18:49:18 | 显示全部楼层
第一个定义是指针数组,而第二个定义的是二维数组,两个不同的概念,有不同的规定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-24 19:35:55 | 显示全部楼层
楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-9-24 19:47:46 | 显示全部楼层
Dragon_Y 发表于 2015-9-24 18:49
第一个定义是指针数组,而第二个定义的是二维数组,两个不同的概念,有不同的规定

我总是把指针数组与数组指针混淆不清!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-24 21:04:25 | 显示全部楼层
桃花飞舞 发表于 2015-9-24 19:47
我总是把指针数组与数组指针混淆不清!

指针数组是数组,其元素为指针,而数组指针是一个指针;很好区分的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-16 02:05:08 | 显示全部楼层
char *s=,=后面的内容是字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-13 13:05:26 | 显示全部楼层
冒个泡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-23 18:27:19 | 显示全部楼层
不可以,二级指针指向指针数组,一级指针指向一维数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-23 20:39:25 | 显示全部楼层
二级指针浪费空间   就是这么理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 20:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表