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++ 啦~~~