gpt4 book ai didi

c - 有没有一种方法可以在不执行这样的循环的情况下分配数组?

转载 作者:行者123 更新时间:2023-11-30 14:22:59 24 4
gpt4 key购买 nike

我刚刚看到了多维数组,作为练习,我首先想用这段代码打印出一个字符串;可惜没用。

#include <stdio.h>
main()
{
char a[][20] = {"Hello"};
printf("%s" , a [1]);
getchar();
}

我设法做到这一点的唯一方法是用循环添加每个字符:

#include <stdio.h> 
main()
{
char a[] = {"Hello"};
int i=0
while(a[i]!='\0')
{
printf("%c" , a[i]);
i++;
}
getchar();
}

初始化字符串时我缺少什么?

最佳答案

在第一个片段中,您正在访问越界内存。有效的代码是:

#include <stdio.h>
int main(void)
{
char a[][20] = {"Hello"};
printf("%s\n", a[0]);
getchar();
}

C 数组从零开始索引。您只定义并初始化了a[0];因此,访问 a[1] 是未定义的行为。

在第二个示例中,您可以使用“%s”确定:

#include <stdio.h> 
int main(void)
{
char a[] = {"Hello"};
printf("%s\n", a);
getchar();
}

或者你可以使用:

    printf("%s\n", &a[0]);

这当然是一个一维数组。

关于c - 有没有一种方法可以在不执行这样的循环的情况下分配数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300477/

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