gpt4 book ai didi

c - 对这段代码有几点疑惑……(指点)

转载 作者:行者123 更新时间:2023-12-02 07:35:07 26 4
gpt4 key购买 nike

这是工作正常的代码...

int main()
{
char c[]={'\t','\n','\0'};
int i;
char *p,*str;
str=c;
p=&c[1];
printf("%d\n%d\n",*p,*str);
system("pause");
return 0;
}

我的问题是为什么它是 str=c; 而不是 str=&c;(会出错)及其 p=&c[1]; 而不是 p=c[1]?

最佳答案

当您进行赋值时,赋值的两边都需要类型兼容

在某些情况下,数组的名称会衰减为指向其第一个元素的指针。所以 c 返回指向一个字符的指针,即 char *&c 给出一个数组的地址,这显然不是 类型char *(str 的类型是 char*),类型不匹配以编译错误的形式为您提供诊断。

&c[1] 为您提供 char *c[1] 给出该索引处的值,即:字符。在这种情况下,ptype 又是 char *,因此是观察到的结果。


好读:
How do I use arrays in C++?

关于c - 对这段代码有几点疑惑……(指点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17381098/

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