C++ 数组首元素指针运行期间可否改变的问题

转载自 https://blog.csdn.net/dengm155/article/details/51866285?utm_source=blogxgwz5

  C/C++中,数组名代表首元素地址,教材中有时候会写数组名代表指向首元素地址的指针,而指针又是存放元素地址的变量,按照这样的理解,应该可以写出以下代码:

  

void test()
{
    char a[20];
    a++;
}

  然而实际上这样写会报错,其原因在于a并非一个指针变量而是一个看做常数的地址编号,或者说是一个常量指针(这点网上有不同的说法,但总之他是一个常量),因此不能进行自增等操作。

  而将一个数组名作为参数传入函数后,在函数体内部却可以对数组名进行自加自减等操作,可以理解为此时的数组名是一个真正意义上的非const修饰的指针变量,存储了数组首元素的地址。代码如下:

char b[20];
void test_1(char array[])
{
  array++;
}
int main()
{
  test_1(b); //能够通过编译
}
原文地址:https://www.cnblogs.com/XieJunWei666/p/14031733.html