引言
C程序设计语言(K&R)5.6节总结和疑惑
总结
pmessage是一个指针,其初值指向一个字符串常量,如果试图修改字符串的内容,结果是没有定义的。
char amessage[] = "hello c"; // 定义一个数组
char *pmessage = "hello c"; // 定义一个指针
char *p[] 其中p是数组变量,不能使用p++来获取数组的下一个值,而printlines函数中通过值传递,可以改变lineptr的值。
#include "stdio.h"
void printlines(char *lineptr[], int nlines);
int main() {
char *a = "a";
char *b = "b";
char *c = "c";
char *p[] = {a, b, c};
printlines(p, 3);
printf("%s\n", *p);
printf("%s\n", *p++); // failed
return 0;
}
void printlines(char *lineptr[], int nlines) {
while (nlines-- > 0) {
printf("%s\n", *lineptr++);
}
}