当前位置: 代码迷 >> C语言 >> 小问题请教
  详细解决方案

小问题请教

热度:122   发布时间:2008-02-18 21:30:40.0
[bo]以下是引用 [un]xianshizhe111[/un] 在 2008-2-18 16:59 的发言:[/bo]

/*这不是小问题了这是内存分配*/
/*TC DEV-CPP 正常*/
#include
#include
int main()
{
  int N;
  int i;
  int *array;

  array=(int*)malloc(sizeof(int)); /*最初值*/
  
  printf("请输入数组大小:");
  scanf ...


有些多次一举。
本帖最近评分记录

―>〉Sun〈<―
2008-02-18 13:30:40
cosdos

来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2107
专家分:1364
注 册:2007-6-19
  得分:0 
printf("请输入数组大小:");
    scanf("%d", &n);
    array = (int*)malloc(sizeof(int) * n);

// 没试过输入负数和零的情况,有机会试下
----------------解决方案--------------------------------------------------------
输入零干吗?数组下标为大于零的正整数.
----------------解决方案--------------------------------------------------------
只是看下 malloc 的返回值

应该是返回 NULL 吧,不过没自己试过。

[[it] 本帖最后由 cosdos 于 2008-2-18 21:51 编辑 [/it]]
----------------解决方案--------------------------------------------------------
array = (int*)realloc(array, N * sizeof(int));
----------------解决方案--------------------------------------------------------
楼主这已不是初学内容这已经是高级编程的内容了.
资料当然少.
----------------解决方案--------------------------------------------------------
/*
realloc() 版
输入非数字结束输入
*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int n;
    int i;
    int * array;

    array = (int*)malloc(sizeof(int));
    printf("把元素赋值:");
    for(n = 0;
       NULL != (array = (int*)realloc(array, sizeof(int) * (n + 1)))
       && scanf("%d", array + n) == 1;
       n++)
        continue;  // 可换为空语句或,NULL;

    for(i = 0; i < n; i++)
        printf("%d ", array[i]);

    free(array);
    system("pause");
    return 0;
}



---------------
----------------解决方案--------------------------------------------------------
  相关解决方案