这种数组声明并赋初值等价于什么?
#include <stdio.h>int main(void)
{ char *s[ ]={"one","two","three"},*p;
p=s;
printf("%c,%s\n",*(p+1),s);
}
char *s[]={"one","two","tree"};
可不可以写成char s[ ]={"tone","two","three"};
可数组不是不能对二维进行省略么?
不可以, char *s[] ,里面的内容是字符串,而char s里面的内容是字符。 可以省略,不过是省略前面的数字:
char[]={{"tone","two","three"}}; 狼之道 发表于 2015-8-28 13:17
可以省略,不过是省略前面的数字:
char[]={{"tone","two","three"}};
这样写应该不对吧。里面存的字符。你给是字符串。你在程序中试过吗? yjip267 发表于 2015-8-28 17:12
这样写应该不对吧。里面存的字符。你给是字符串。你在程序中试过吗?
不好意思写错了,应该是char a[]={"tone","two","three"} 本帖最后由 Delta 于 2015-8-29 13:56 编辑
可以省略的只是第一维长度,如char s[] = { "tone", "two", "three" }
字符串也是一种数组哦
#include <stdio.h>
int main(void)
{
char s[] = { "tone", "two", "three" },*p;
p = s;
printf("%c,%s\n", *(p + 1), s);
}
再说了,定义指向数组的指针本来就是为了省空间,何必呢?:ton: 个人觉得还是不支持这 char s[] 这种定义。这样比较好一点char *s[ ];字符可以任意长度的。 yjip267 发表于 2015-8-29 16:38
个人觉得还是不支持这 char s[] 这种定义。这样比较好一点char *s[ ];字符可以任意长度的。
就是说char *s[]和char s[]的作用都是定义一个二维字符数组。 可以这么说。 如果要省略的话也只能省略前面的那个,比如是s[]; {:1_1:} 看看 第一个定义是指针数组,而第二个定义的是二维数组,两个不同的概念,有不同的规定 楼上正解 Dragon_Y 发表于 2015-9-24 18:49
第一个定义是指针数组,而第二个定义的是二维数组,两个不同的概念,有不同的规定
我总是把指针数组与数组指针混淆不清! 桃花飞舞 发表于 2015-9-24 19:47
我总是把指针数组与数组指针混淆不清!
指针数组是数组,其元素为指针,而数组指针是一个指针;很好区分的 char *s=,=后面的内容是字符串 冒个泡{:10_258:} 不可以,二级指针指向指针数组,一级指针指向一维数组 二级指针浪费空间 就是这么理解
页:
[1]
2