您的位置:程序门 -> vc/mfc -> 基础类



请问一个小问题:为什么像我这样给一个数组赋值要出错?具体见下面,谢谢!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问一个小问题:为什么像我这样给一个数组赋值要出错?具体见下面,谢谢!![已结贴,结贴人:pm0115]
发表于:2007-06-02 11:50:54 楼主
#include   "stdafx.h "
#include   "malloc.h "
#include   "math.h "

main()
{
int   n;

double   *x;
x   =   (double   *)malloc(   4   *   sizeof(double)   );

for(   n   =   0   ;   n   <=   3   ;   n++   )
scanf(   "%f "   ,   x[n]   );           //aaaa

for(   n   =   0   ;   n   <=   3   ;   n++   )
printf(   "%f\n "   ,   x[n]   );

                  free(   x   );
return   0;
}

请问一下为什么在给x[n]赋值就是执行到aaaa时要出错呢?百思不得其解,请大家帮帮我吧,谢谢了!!!!
发表于:2007-06-02 12:00:071楼 得分:0
你的double   *x算什么意思???
一个未知大小的数组吗?
数组的大小都是未知的怎么去初始化呢?
发表于:2007-06-02 12:13:292楼 得分:0
scanf(   "%f "   ,   x[n]   );          
好像应该是
scanf(   "%f "   ,   &x[n]   );       //好久没用c了
发表于:2007-06-02 12:51:063楼 得分:0
又一个用变量初始化数组长度的,const   int   n=4;或者int*temp=new   int[n];这样才能动态创建,开始学就用const   int   n=4;这种设置常量的方法吧
发表于:2007-06-02 13:48:204楼 得分:0
scanf(   "%f "   ,   x[n])改为
scanf(   "%f "   ,   x+n);//最好用这个
或是
scanf( "%f "   ,   &x[n]);
发表于:2007-06-02 14:40:505楼 得分:0
我现在改成下面的程序了,但输出还是不对头

int   n;

double   *p;
double   *x;
x   =   (double   *)malloc(   4   *   sizeof(double)   );
p   =   x;

for(   n   =   0   ;   n   <=   3   ;   n++   )
scanf(   "%f "   ,   x++   );

x   =   p;
for(   n   =   0   ;   n   <=   3   ;   n++   ,   x++   )
printf(   "%f\n "   ,   *x   );

free(p);
return   0;
发表于:2007-06-02 16:21:016楼 得分:20
float型的数据才是用%f
double型的要把scanf和printf中的%f都换成%lf
发表于:2007-06-02 16:24:237楼 得分:0
看着指针   咋就这么不舒服...


快速检索

最新资讯
热门点击