gpt4 book ai didi

c++ - 传递给函数的数组参数不是常量指针吗?

转载 作者:行者123 更新时间:2023-12-01 14:58:03 25 4
gpt4 key购买 nike

考虑以下代码:

void foo(char a[]){
a++; // works fine, gets compiled
//...
}

现在,考虑一下:
void foo(){
char a[50];
a++; // Compiler error
//...
}

我听说数组等效于常量指针,因为它不是左值,所以不能递增。

那么为什么要编译第一个代码,是因为因为将函数的数组参数作为指针传递,即T []转换为T *以进行传递。
因此,foo(a)将a作为指针传递。

但是由于声明为:它不会再次转换回T []吗?
void foo(char a[]);

最佳答案

当您将数组作为函数的参数传递时,它会衰减为指针。
因此,在函数体内递增的东西是指针,而不是数组。

关于c++ - 传递给函数的数组参数不是常量指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60399673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com