抑郁症吃什么药好:关于 C 语言的字符指针数组

来源:百度文库 编辑:高考问答 时间:2024/05/04 08:48:11
定义一个字符指针数组,类似如下的源代码:

char *p[2];
p[0]="123456";
p[1]="7890ab";

这居然是合法的,感觉用这种方式比用字符串数组好得多,但是,教材上涉及到字符串处理的程序,都没有这么用,为什么呢??这方法有什么缺点吗??

这居然是合法的?
这本来就是合法的。而且通常都是这么写的,没有什么缺点。

这是指针的数组,不是字符的数组。
p[0] = "123456" 是说把字符串 "123456" 在内存中的首地址赋给指针 p[0]

这段程序就相当于:

char p[2][];

p[0] = "123456";
p[1] = "7890ab";

这是因为int型和char型进行了互转,你这样定义其实参数是一个数值,而不是字符,如果是字符中间应用逗号进行间隔,否则你试一下就会出错。

为什么叫居然呢,确实,本来就合法呀

书上什么都有,再仔细看看