gpt4 book ai didi

c - 函数参数中的数组名称的处理方式是否与本地声明的数组不同(自动)

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:28 26 4
gpt4 key购买 nike

请阅读下面程序中的评论:

#include<stdio.h>
void test(char c[])
{
c=c+2; //why does this work ?
c--;
printf("%c",*c);
}
int main()
{
char ch[5]={'p','o','u','r'};
//ch = ch+2; //this is definitely not allowed on array names as they are not pointers
test(ch);

return 0;
}

OUTPUT
o

最佳答案

您应该记住,数组的名称“衰减”为指向其第一个元素的指针。这意味着 test(ch); 等同于 test(&ch[0]);

此外,void test(char c[]) 只不过是 void test(char* c),一个指向字符的指针。指针可以递增或递减,这就是为什么c = c + 2c-- 编译得很好。

关于c - 函数参数中的数组名称的处理方式是否与本地声明的数组不同(自动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56305561/

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