zaijzhgh 发表于 2008-5-27 09:28

结构体中字符数组赋值问题

OK,先看代码:
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
using namespace std;

struct m{
    char name;
};
int main(int argv, char **agrc)
{
    m *head = (m*)malloc(sizeof(m));
    head->name = {'h', 'u'};//error
    char name = {'u', 'i'};   //right   
    strcpy(head->name, "huang");    //right
    free (head);
    getchar();
    return 0;
}

在这里,为什么会出现head->name = {'h', 'u'};//error的情况?

[ 本帖最后由 zaijzhgh 于 2008-5-27 09:34 编辑 ]

hjack 发表于 2008-5-27 09:35

head->name是第31个数组元素...你却要放两个元素进去.
另,这里数组越界了...

zaijzhgh 发表于 2008-5-27 09:44

原帖由 hjack 于 2008-5-27 09:35 发表 https://www.gdutbbs.com/images/common/back.gif
head->name是第31个数组元素...你却要放两个元素进去.
另,这里数组越界了...
,hjack,哈哈,真是不好意思,刚才写代码的时候先写char name = "huang";了,误导了思维,
修改一下:

   int j = 0;
    for(; j < 2; j++)
    {
      head->name = 'h';
    }
    head->name = '\0';


要是在面试的时候遇到这种低级错误那就真的over了……

jinry 发表于 2008-5-27 22:26

还是得鼓励一下的.....自己去想过..
页: [1]
查看完整版本: 结构体中字符数组赋值问题