那你改用memset(a,1,12)
会有问题吗?

解决方案 »

  1.   

    问题出在sizeof()这个函数上。这个函数返回长度和数组实际编号是不一样的。数组编号从0开始
      

  2.   

    memset()函数是对内存块的每个字节初始化,而你的数组类型是短整型的,每个字节都是1,那显然不对,相当于成员的值变成了0x101.
    想你这种情况,不能用memset()来初始化每个成员为1。
    --------------------
    我设计的Koodoo语言:
    http://www.bluespace.com.cn/koodoo/pdf/koodooref.chm
      

  3.   

    void main()
    {
    char a[12];
    memset( a,1,sizeof(a) );
    printf("%d",(int)*a );
    }
    这样就可以了,你的问题关键在
    1.用printf的时候打印a的时候没有转换格式
    2.memset里面的1是int,注意数据类型
    你犯的是那种我也不晓得,我不知道你是怎么知道数组a里各元素的值不是1的
      

  4.   

    楼主上了个大当!
    memset(a,1,sizeof(a));
    这段代码的意思是把a数组的前24个字节都设置为1.每个short占了两个字节,所以每个字节的最末位都便称了"1",高位变成了"0",而两个字节才表示一个short,所以两个字节组合起来的short就是00000001 00000001,这个值表示成10进制就是"257".
    /***********************************
    那你改用memset(a,1,12)
    会有问题吗?
    2楼的兄弟,你的也是有问题,你只是将a的前6个元素改的每一个字节改成了1,所以前六个元素都是"00000001 00000001",因此前6个元素按10进制是257,而后6个元素泽没有被正确初始化,是系统的随机值.
      

  5.   

    如果想每个成员赋成1, 个人感觉也只能通过循环赋值 ,像memset一般是为整个数组赋0值来用的。