您的位置:首页 > 其它

数组名 vs 指针

2013-10-18 22:38 169 查看
ex:

#include <stdio.h>
#include <stdlib.h>

void test(char a[])
{
a++; //ok
printf(" second char is %c\n", a[0]);
}
void main()
{
char s[] = "abcde";
char *p = s;
p += 2; //OK
//s += 2;  //error: '+=' : left operand must be l-value
printf("%c\n",p[0]);

test(s);
}


上述 s+=2; 之所以错误是因为, 当声明一个数组 s 时, s 是可以看做 指针,但是 他是一个 常量指针 !!!相当于 char * const s = "abcde";

而当数组作为函数形参的时候,就退化成为一个普通的指针了,所以可以 a++ 啦~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: