gpt4 book ai didi

c - C中的char数组和char指针有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 16:13:53 25 4
gpt4 key购买 nike

我试图理解 C 中的指针,但我目前对以下内容感到困惑:

  • char *p = "hello"

    这是一个指向字符数组的字符指针,从h开始。

  • char p[] = "hello"

    这是一个存储你好的数组。

将这两个变量传递给此函数有什么区别?

void printSomething(char *p)
{
printf("p: %s",p);
}

最佳答案

char*char[] 是不同的类型,但并非在所有情况下都立即显而易见。这是因为数组退化为指针,这意味着如果在预期类型为 char* 的地方提供类型为 char[] 的表达式,编译器自动将数组转换为指向其第一个元素的指针。

您的示例函数 printSomething 需要一个指针,因此如果您尝试像这样将一个数组传递给它:

char s[10] = "hello";
printSomething(s);

编译器假装你这样写:

char s[10] = "hello";
printSomething(&s[0]);

关于c - C中的char数组和char指针有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186765/

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