关于动态数组问题~~程序不知道为什么运行了4个数就出错
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
double scand,swad;
//double * ptd;
static int array = 0;
double ptd[array];
int i,j;
puts("Enter the values (q to Quit)");
while(1)
{
printf("array is :%d \n",array);
i = scanf("%lf",&scand);
if (i != 1)
{
break;
}
//swad = scand;
ptd[array] = scand;
array++ ;
}
printf("Here are your entries \n ");
printf("array is :%d \n",array);
for(j = 0;j<array;j++)
{
printf("%7.2f",ptd[j]);
}
system("PAUSE");
return 0;
}
arrary变量值为4的时候就出错了~~搞不懂~~请高手指教
问题点数:60、回复次数:6Top
1 楼lbing7(向青润老大学习!!!)回复于 2005-06-03 18:55:09 得分 0
static int array = 0;
double ptd[array];
.................................
动态数组不是这样定义的吧?
Top
2 楼lbing7(向青润老大学习!!!)回复于 2005-06-03 18:56:53 得分 10
没有一一开始就出问题就好了!
动态数组:
int *p;//定义一个指针
p = malloc();//()里放你在设的大小,这样才算是动态的!Top
3 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-06-03 19:32:54 得分 40
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
double scand,swad;
static int array = 0;
double *ptd = (double *)malloc(sizeof(double) * array);
int i,j;
puts("Enter the values (q to Quit)");
while (1) {
printf("array is :%d \n",array);
i = scanf("%lf",&scand);
if (i != 1) {
break;
}
//swad = scand;
ptd[array - 1] = scand;
array++ ;
ptd = (double *)realloc(ptd, array);
}
printf("Here are your entries \n ");
printf("array is :%d \n",array);
for (j = 0; j < array; j++) {
printf("%7.2f",ptd[j]);
}
free(ptd);
system("PAUSE");
return 0;
}Top
4 楼thzhaosen(随风)回复于 2005-06-03 19:34:34 得分 5
不会吧,我是在vc++的环境下编译的啊,没有错的啊
你再试试看
Enter the values (q to Quit)
array is :0
12
array is :1
23
array is :2
34
array is :3
45
array is :4
34
array is :5
34
array is :6
q
Here are your entries
array is :6
12.00 23.00 34.00 45.00 34.00 34.00请按任意键继续 .
这是运行的结果,你看一下Top
5 楼yangfasheng(悟法:前面是绝路,希望在拐角)回复于 2005-06-03 19:35:44 得分 5
//double * ptd;
static int array = 0;
double ptd[array];
=========================
可能是 array 没有初始化为一个常量;
数组大小必须定义为一个整形常量,
如果是动态数组,在分配内存空间时也要指定所要分配的空间的字节个数.Top
6 楼thzhaosen(随风)回复于 2005-06-03 19:36:38 得分 0
不好意思,忘了,应该改一下,那样定义数组是不对的,我把它改为静态数组了
int main(int argc, char *argv[])
{
double scand;
//double * ptd;
static int array=0;
double ptd[100];
int i,j;
Top




