您的位置:首页 > 其它

琐记1:字符串常量与数组的部分区别

2017-08-02 21:46 239 查看
1、指针的指向可以改变,但这要区分于字符串常量的改变:
char a[20] = "abcdefg";
char b[20] = "qwertyu";
char *p = a;
p = b;
printf ("%s %s\n", a, b);
printf ("%s\n", p);

这里p指针打印出的值不再是a,而是重新指向的b的值。而:

char *num = "abcdefg";
scanf ("%s", num);
printf ("%s\n", a);
这样是对一个字符串常量读值,会出现段错误。要避免这样的段错误,可以用到一个字符串数组:
char a[20] ;// 可以不用赋初值,而且这里如果对其赋初值NULL将不会出现段错误,但值并不会改变,还是null
char *num = a;
scanf ("%s", num);
printf ("%s\n", a);


2、虽说数组名可以看成其首元素的地址,但数组是常量,不能进行++这类的操作

int a[5] = {1,2,3,4,5};
int i;
for (i = 0; i < 5; i++)
printf ("%d\n", *a++);
// *a++ 即 *(a++), 区别于(*a)++
这里就需要定义一个指针来进行这样的遍历打印操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: