august 发表于 2007-8-15 00:13:09

问下指针数组的问题

char *string={"data structure","computer design","c laguage"};
char *p;
有这样的程序, 其可通过这样strcmp再p=string,string=string;string=p;
这样改变指针数组里元素的位置,但为什么 p=string;printf("%s\n",*p); 这样却不可以把第一个元素打印出来呢?

coolpay64 发表于 2007-8-15 12:14:34

p=string;printf("%s\\n",*p);
好吧,最大的問題是字串(string, %s)是一陣列以\\0作尾的char
也就是char*,char指標
最一般的用法該為 printf("%s\\n",p);
如果成了 printf("%s\\n",*p);
printf中參照的字串(因為字串是指標)便會是p指著的字串中第一個字元,也就是'd',把'd'(也可能是'data',自己譯成ASCII吧)作為記憶體位置參照,記憶體出錯(Seg. Fault)是必然

august 发表于 2007-8-15 12:44:49

明白了不少,谢谢
页: [1]
查看完整版本: 问下指针数组的问题