我不知道你要讨论的问题是什么,但我猜你是想讨论 a里面的值对吗?我知道你的意思,你是说a.a的值是ch所指向的那串字符串,又想证明编译器有问题,对吗?
其实,是你的编程技术不够精通,只要是对C语言精通一点的人都理解这是为什么?并不是编译器有问题,只能用一句话来说明这些,那就是“C 语言太灵活了”。

解决方案 »

  1.   

    不懂你的意思,char a[1]和char a有区别吗?不就一个字符么?
      

  2.   

    你能把一个char[1024]复制到char[1]里去,挺厉害的:)
      

  3.   

    主要的区别:
    char a[1] a为指向char指针
    char a,a 为char变量,
      

  4.   

    struct A{
       char a[1];
       int b;
    };虽然A.a只能放一个字节,但编译器理解 char a[1]为字符串,当用 strcpy(ch,a.a)编译器也认为正确的,因为 a.a事实上就是一个字符串字针。
    这样做只是 a.a后面的内存数据被破坏,如果按C语言来说,这个程序员犯了低级错误。
      

  5.   

    不明白!!老字号的牛们都哪里去了?我这里要讨论两个问题:1、strcpy(a.a, ch);之后ch里面的内容被清空,为什么?
    2、a.a实际上是一个不可变的地址,但是我怎样往里面添加更多内容?自己不是很清楚的请不要误导别人
      

  6.   

    我只用过下面这种用法
    strcuct A{
    int b;
    char a[];
    }
    这样a可以连续动态分配内存struct A {
    char a[1];
    int b;
    }
    没用过,关注,我试验一下
      

  7.   

    Kronus(Kronus)
    你这么用strcuct A{
    int b;
    char a[];
    };
    我以前用过
    不过现在我都这么用
    strcuct A{
    int b;
    char a[1];
    };
    我见过很多结构都是这么定的如MS的
    typedef struct tagBITMAPINFO { 
      BITMAPINFOHEADER bmiHeader; 
      RGBQUAD          bmiColors[1]; 
    } BITMAPINFO, *PBITMAPINFO; 
      

  8.   

    To:Kronus(Kronus) 此问题来源于
    typedef struct tagBITMAPINFO { 
      BITMAPINFOHEADER bmiHeader; 
      RGBQUAD          bmiColors[1]; 
    } BITMAPINFO, *PBITMAPINFO; 调色板的颜色数据如何写入bmiColors[1]?
      

  9.   

    TO: alphagx(alpha) 请问怎么用这个a[1]?
      

  10.   

    我认为这两种的唯一区别就是是否已经分配一个空间。我一直不知道MS为什么要分配一个空间,还是只是编程习惯?欢迎交流。
    struct A{
    int b;
    char a[];
    };
    sizeof(A) == sizeof(int);struct A{
    int b;
    char a[1];
    };
    sizeof(A) == sizeof(int)+ sizeof(char);
      

  11.   

    用法可以这样用:
    如果是char a[]的话
    A *pA = (struct A*)malloc(sizeof(A) + a的字节数);如果是a[1],计算时就需要减去一个字节
      

  12.   

    我明白了,之所以用a[1],是为了方便分配内存,利于计算a一个单位的大小
    示意如下:
    A *pA = malloc(sizeof(A) + sizeof(A.a) * (N -1))
      

  13.   

    iamwjp(小虾) (2001-11-25 14:03:43)  得0分 
    不明白!!老字号的牛们都哪里去了?我这里要讨论两个问题:1、strcpy(a.a, ch);之后ch里面的内容被清空,为什么?
    2、a.a实际上是一个不可变的地址,但是我怎样往里面添加更多内容?自己不是很清楚的请不要误导别人  -----------------------------------------------------------------------
    你懂不懂 内存结构,我建议你再去好好的听听老师的课。别在这里乱吹