gpt4 book ai didi

c - 将数组作为参数传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:42 24 4
gpt4 key购买 nike

我对将数组作为参数传递给函数有疑问,我的代码如下,

  #include <stdio.h>
#include <string.h>

void str_cpy(char a[], char b[])
{
a = b;
printf("%s\n", a);
}

int main()
{
char a[] = "hello";
char b[] = "world";

str_cpy(a, b);
printf ("%s\n", a);
return 0;
}

在上面的代码中,我将数组传递给函数是通过引用传递的,因此它应该在主函数中打印“world”,因为我将 b 的值分配给 a,即函数定义中的 a = b 但事实并非如此,所以请帮助我..

最佳答案

当您将数组传递给函数时。它衰减为指向数组第一个元素的指针。

您的函数 str_cpy() 仅将传递的指针 a 指向另一个指针 b。它不修改原始字符数组a的内容。请注意指针 ab 是函数的局部指针。

此外,请注意关于数组的基本规则是:
“数组不可赋值,您必须复制数组中的每个元素。”

您的密码是equivalent to :

 char a[] = "hello";
char b[] = "world";

char *ptr1 = a;
char *ptr2 = b;

ptr1 = ptr2;

printf("[%s]",a);

它不会改变原始数组的内容,它只是将一个指向该数组的指针指向另一个数组。

将一个数组的每个元素复制到另一个数组是 strcpy() 的功能。 提供。您应该简单地使用标准库提供的功能。

关于c - 将数组作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13966834/

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