gpt4 book ai didi

c - 应该接受字符数组作为输入的函数如何接受传递给它的数组第一个元素的内存地址?

转载 作者:行者123 更新时间:2023-11-30 16:19:52 25 4
gpt4 key购买 nike

我正在学习如何将数组传递给函数,当书(C for dummies)说当你将数组传递给函数时,数组的第一个元素的地址就是传递给函数的地址时,我感到很困惑功能。

我知道像 char name[] 这样的数组如果将内存地址传递给它,则无法保存内存地址,所以我想知道为什么函数 say(char name[])下面可以保存传递给它的数组第一个元素的内存地址。

#include <stdio.h>

void say(char name[])
{
printf("Welcome %s",name);
}

int main()
{
char h[] = "Kyle";
say(h);
return(0);
}

最佳答案

在 C 语言中,数组基本上是内存中的一些连续变量。如果我的数组是 int tab[4],我的内存将包含每个元素(在本例中为 int 类型),一个接一个。变量 tab 确实用作指向其第一个元素的指针。

当您编写 tab[2] 时,对于编译器来说,这与您编写 tab + 2 完全相同。

在您的示例中,char name[] 表示该函数需要一个数组。 char h[] 创建一个名为 h 的数组,并使用正确的大小对其进行初始化以包含“Kyle”(以及用于 \0 的另一个字符> 字符)。当您将 h 作为 say() 的参数传递时,第一个元素的地址将发送到您的函数,这就是为什么它可以毫无问题地访问它。

关于c - 应该接受字符数组作为输入的函数如何接受传递给它的数组第一个元素的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55471084/

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