【发布时间】:2018-02-17 16:10:12
【问题描述】:
void struct_tokens(struct Words **w_count, int size)
{
*w_count = (struct Words*)calloc(size, sizeof(struct Words));
char *temp;
int n = 0;
int i = 0;
printf("Value 1: %s\n", (*w_count[0]).word);
printf("Value 2: %s\n", (*w_count[1]).word);
}
我的结构如下所示:
struct Words
{
char word[20];
unsigned int count;
};
只要我访问数组中的下一个元素,它就会崩溃,因此访问了 w_count[0],但它无法访问 w_count[1] 而不会崩溃。所以 Value 1 打印到控制台,但 Value 2 没有,这是为什么呢?
【问题讨论】:
-
struct_tokens()是怎么调用的,set里面的变量是怎么传入的。 -
向我们展示一个尽可能简单但仍存在此问题的完整程序。
-
答案成立 - 在给定代码的早期,您访问的方式会导致未定义的行为。但是然后更正一下,如果您仍然遇到错误,那么您没有显示某些内容
-
对
calloc()的调用看起来更像是对malloc()的调用,但名称中有错字。 -
@coderredoc 我重新检查了我的代码,看来我没有完全改变你的一行,为那个伙伴欢呼它现在似乎可以工作了:)。