gpt4 book ai didi

c - 数组如何像 C 中的指针一样工作?

转载 作者:太空狗 更新时间:2023-10-29 15:32:29 24 4
gpt4 key购买 nike

我知道这个问题已经回答了好几次,但我无法理解以下脚本。顺便说一下,我是 C 语言的新手。

据我所知,如果一个数组用作值,它表示第一个字符的地址,也就是指针。

如果我运行这个:

int main (){
char quote[] = "C is great"
printf ("The quote: %s\n",quote);
printf ("The address of quote is %p\n",quote);
printf ("Size of quote is %lu\n",sizeof(quote));
}

我得到:

The quote: C is great
The address of quote is 0x7fff06fa0d90
Size of quote is 11

所以我的问题是在所有 printf 情况下,我使用了相同的变量引号,但是通过更改打印类型,它如何从值变为指针以及指针表示存储在哪里,因为 sizeof 给出了字符串的长度。

谢谢!

最佳答案

指针表示未存储在指定位置。它与 2 + 2 的结果具有相同的“存储”。 (通常,这将是一个寄存器)。这些在 C 中被正式称为;有时出于讨论目的称为右值

quote 作为参数传递给 printf 的两种情况都会发生转换。 %s%p 告诉 printf 是否输出接收到的指针的表示,或者是否跟随该指针并打印出另一端的字符。

右值在需要时形成。 sizeof 运算符不会对其操作数执行左值到右值的转换,因此 sizeof(quote) 不会生成指针或对其执行任何操作。

关于c - 数组如何像 C 中的指针一样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892650/

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