gpt4 book ai didi

c - 这个使用字符串的非常简单的 C 程序有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:40 25 4
gpt4 key购买 nike

我自 90 年代以来就没有使用过 C,所以我可能脑袋放屁,但下面的程序有什么问题?使用 gcc 4.8,我收到各种警告,然后在运行时出现段错误。感谢您的帮助。

#include <stdio.h>

void print_string(char **a, char **b)
{
printf("a string: \"%s\"\n", a[5]);
printf("another string: \"%s\"\n", b[9]);

return;
}

int main(void)
{
int i, j;
char a[10][10];
char b[10][10];

for(i = 0; i < 10; ++i)
{
for(j = 0; j < 9; ++j)
{
a[i][j] = 'x';
b[i][j] = 'y';
}
a[i][9] = '\0';
b[i][9] = '\0';
}

printf("a string: \"%s\"\n", a[3]);
printf("another string: \"%s\"\n", b[7]);
print_string(a, b);

return 0;
}

最佳答案

编译器不知道你的多维数组 ab 的维度,所以你必须在函数声明中指定它们:

void print_string(char a[][10], char b[][10])

详细信息:

  • 在函数 main 中,声明了一个数组 char a[10][10],其中包含 100 个 char

  • 编译器正确a[i]翻译成(char*)((int)a+10*sizeof(char)*i )

  • 然后,您将它传递给函数 print_string,在那里它被声明为指针 char** a

  • 编译器错误地a[i]翻译成(char*)((int)a+sizeof(char*)*i)

关于c - 这个使用字符串的非常简单的 C 程序有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971747/

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