工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 3063|回复: 3

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

[复制链接]
发表于 2008-5-27 09:28 | 显示全部楼层 |阅读模式
OK,先看代码:

  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<iostream>
  4. using namespace std;

  5. struct m{
  6.     char name[30];
  7. };
  8. int main(int argv, char **agrc)
  9. {
  10.     m *head = (m*)malloc(sizeof(m));
  11.     head->name[30] = {'h', 'u'};  //error
  12.     char name[30] = {'u', 'i'};   //right   
  13.     strcpy(head->name, "huang");    //right
  14.     free (head);
  15.     getchar();
  16.     return 0;
  17. }

复制代码
在这里,为什么会出现head->name[30] = {'h', 'u'};  //error的情况?

[ 本帖最后由 zaijzhgh 于 2008-5-27 09:34 编辑 ]
发表于 2008-5-27 09:35 | 显示全部楼层
head->name[30]是第31个数组元素...你却要放两个元素进去.
另,这里数组越界了...
回复

使用道具 举报

 楼主| 发表于 2008-5-27 09:44 | 显示全部楼层
原帖由 hjack 于 2008-5-27 09:35 发表
head->name[30]是第31个数组元素...你却要放两个元素进去.
另,这里数组越界了...

,hjack,哈哈,真是不好意思,刚才写代码的时候先写char name[30] = "huang";了,误导了思维,
修改一下:

  1.    int j = 0;
  2.     for(; j < 2; j++)
  3.     {
  4.         head->name[j] = 'h';
  5.     }
  6.     head->name[j] = '\0';

复制代码

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

使用道具 举报

发表于 2008-5-27 22:26 | 显示全部楼层
还是得鼓励一下的.....自己去想过..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-9 12:44

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表