从C函数中的数组中返回项目

麦加利尔93

所以,我正在从事这个子手游戏。我在数组和指针方面遇到了一些麻烦。这就是我所拥有的:

char* getword(int index);
int main (void) {

char *secword =  getword(1);
printf("%s ", *secword);
}

char *getword(int index)
{
 char *words[8]= {'bye', 'hi','what', 'cat', 'dog',
                    'bird', 'air', 'water', 'fire'};
return words[index];
}

我不断收到分段错误(核心转储)错误。

伊哈罗布·阿西米(Iharob Al Asimi)

你有四个重要的错误

  1. 您不能wordsgetword()函数外部使用因为它已分配在函数的堆栈框架中。

    因此,当函数返回时,将释放数组,从而发生未定义的行为。

  2. 您的数组不包含字符串,而是包含字符内容多字符常量是有效的,但是已定义实现,因此您不能在可移植程序中依赖它们。

    因为未启用警告,所以代码会编译,然后,当您尝试访问位于这些值的地址以打印它们时,将定义依赖于多字符常量实现的整数值分配给数组的Poitner,然后进行未定义的行为发生。

  3. printf()期望char每个"%s"说明符*secword都有一个指针具有类型,char所以这也是错误的,因为您没有启用编译器警告,所以它正在再次编译。

  4. 您正在用9单词而不是初始化数组8,这是编译器警告将报告的另一个问题。

您有2个选择

  1. 使函数words静态getword()

    const char *getword(int index);
    int main (void) 
    {
        char *secword =  getword(1);
        printf("%s\n", secword);
    }
    
    const char *getword(int index)
    {
         static const char *words[9] = {"bye",   "hi",  "what",  "cat", "dog",
                                        "bird", "air", "water", "fire"
         };
         return words[index];
    }
    
  2. words在main中声明,然后传递给getword()

    const char *getword(int index, const char *words[]);
    int main (void) 
    {
         const char *words[9] = {"bye",   "hi",  "what",  "cat", "dog",
                                 "bird", "air", "water", "fire"
         };
         char *secword = getword(1, words);
         printf("%s\n", secword);
    }
    
    const char *getword(int index, const char *words[])
    {
         return words[index];
    }
    

我已经写了一段时间的c程序,并且我使用编译器可以给出的尽可能多的警告,如果我是一位学习c的新程序员,我会尽可能地启用更多警告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取从函数中的数组返回的项目

来自分类Dev

如何获取从函数中的数组返回的项目

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

从C中的函数返回数组

来自分类Dev

从C ++中的函数返回数组

来自分类Dev

在C函数调用中返回空项目

来自分类Dev

从C ++中的函数返回多个数组

来自分类Dev

从C中的函数返回合并的数组

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

从C ++中的函数返回多个数组

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

在C函数中返回char数组

来自分类Dev

检索返回C ++中数组的函数的输出

来自分类Dev

函数返回指针与函数返回数组在C中

来自分类Dev

从C函数中创建的数组返回数组元素?

来自分类Dev

从VBA中的函数返回数组

来自分类Dev

从VBA中的函数返回数组

来自分类Dev

从C#中的C ++函数返回数组和结构

来自分类Dev

如何在C / C ++函数中返回char *数组?

来自分类Dev

从C ++中的函数返回

来自分类Dev

在函数中传递2d数组-从C中的函数返回2d数组

来自分类Dev

从C中的函数返回char数组的首选方法

来自分类Dev

如何从C头文件中的函数返回多维字符数组

来自分类Dev

在cython中返回numpy数组定义的c函数

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

从C中的函数传递和返回2个数组

来自分类Dev

Python中的C函数:返回数组和变量

来自分类Dev

从C ++中的函数返回2D char数组并打印