记录一次学习C++过程中,函数中数组名形参退化成指针的深究,直接上代码
- arr[]会退化为指针,等价于int *arr
- 在C++PrimerPlus描述中,数组名是一个地址常量(不可运算),指针是变量
- 如果没有上述的等价关系,相当于再给一个常量赋值
- 同时,两个数组名不可以同时赋值也是如此(两个常量赋值操作是不允许的)
int func(char arr[]) {
printf("sizeof=%d\n", sizeof(arr));
printf("strlen=%d\n", strlen(arr));
}
int main() {
char array[] = "Hello World";
printf("sizeof=%d\n", sizeof(arr));
printf("strlen=%d\n", strlen(arr));
func(arr);
}
输出结果:
sizeof=12
strlen=11
sizeof=8
strlen=11