首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >怎么可能我的int数组没有被正确初始化

怎么可能我的int数组没有被正确初始化
EN

Stack Overflow用户
提问于 2014-07-23 11:31:35
回答 1查看 52关注 0票数 0

我试图返回一个指向一个ints数组的指针,这些ints都是一个给定数字的除数器。当我给出10作为参数并运行我的程序时,我注意到方法dividers_of(.)给出适当的输出。但是不幸的是,第二个方法叫做number_dividers(.)它看起来好像数组中的某些位置没有被设置为0或如输出‘元素2009’所示的分隔符。我做错了什么?

代码语言:javascript
复制
#include <stdio.h>

int* dividers_of(int number){
     int dividers [number];
     dividers[0]=1;
     int *ptr=dividers;
     int i;
     for(i=2;i<number;i++){
           if(number%i==0){
                  dividers[i]=i;
                  printf("deler : %i\n",dividers[i]);
           } else{
                  dividers[i]=0;
                  printf("niet- deler : %i\n",i);
           }
     }
     return ptr;
}

int number_dividers(int* ptr,int length){
    int * runner = ptr;
    int number_dividers ;
    while(runner!=ptr+length){
                    printf("element %i\n",*runner);
                        if(*runner!=0){
                                      number_dividers++;
                        }
                 runner++;
                 }
    return number_dividers;
}

输出:

代尔人:2尼特-德莱尔:3

niet- deler :4

deler :5

niet- deler :6

niet- deler :7

niet- deler :8

niet- deler :9

要素1

要素2009

要素2008

元素0

元素0

元素1638

要素23

要素1

元素2293

元素0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 11:33:27

这里的问题不是数组没有初始化,而是它是函数中的一个局部变量,一旦函数返回,就会超出作用域。

在另一个函数中拥有并使用指向局部变量的指针将导致http://en.wikipedia.org/wiki/Undefined_behavior

基本上只有两种解决方案:

  1. 动态分配函数中的内存,并将其返回;或
  2. 在调用函数中定义数组,并将其作为参数传递给需要它的函数。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24909335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档