51testing49xqy 发表于 2011-6-16 15:06:21

帮我看看c 结构体 新手,谢谢

int i;
struct Accout
{   
        char id;
        char passwd;
        int balance;
} acc = {{"456\0","456\0",4300},{"123\0","123\0",4000}, {"789\0","789\0",6000}};

ljj149850508 发表于 2011-6-17 14:48:51

你想问什么,你的数组越界了。。

ljj149850508 发表于 2011-6-17 14:56:11

char[] 定义字符串时,会自动在末尾补上\0

r131415 发表于 2011-6-17 22:42:34

:handshake

outdahua 发表于 2011-6-18 14:18:54

char[] 定义字符串时,会自动在末尾补上\0
ljj149850508 发表于 2011-6-17 14:56 http://bbs.51testing.com/images/common/back.gif


    谁说的?这个是随机的,看申请到的内存块原来是什么,不然干嘛要初始化。按你这编码法,经常会随机出现莫名其妙的问题。这是常识

ljj149850508 发表于 2011-6-20 09:11:51

还随机,还常识。。char数组定义字符串和字符不是一个概念
定义字符串就是自动补0,定义字符不补0
char[]="asdfgh",结果为7
char[]={'a','s','d','f','g','h'},结果为6
不相信自己去试。。
还冒出个随机。。牛啊。。定义都出现随机了,要程序干嘛啊
看来你还没明白字符串和字符的区别。

xrh51testing 发表于 2011-6-21 18:06:45

楼上说的正确。

outdahua 发表于 2011-6-22 13:57:09

回复 6# ljj149850508


    都说随机了,试个P,那么大的内存,你自己试去吧。你char[],当然会补0,你有本事char ,都只填"abc"给哥看看,你试个N遍试一下,看是不是每次收会补0,内存没用过,当然是初始会补0.等你碰到你会说了

outdahua 发表于 2011-6-22 14:09:02

回复 6# ljj149850508


    #include<string.h>;
main()
{
char dd;

printf("%s",dd);
}
你试下就知道,看一直都是会无任何显示,还是偶尔会乱码,这个时候申请到的内存,内容都是任意值。

ljj149850508 发表于 2011-6-22 15:03:14

本帖最后由 ljj149850508 于 2011-6-22 15:04 编辑

终于遇见传说中的高手了,不说话

zengyongheng22 发表于 2011-6-30 12:01:22

本帖最后由 zengyongheng22 于 2011-6-30 14:29 编辑

不是吧
#include<string.h>
void main()
{
char dd = "456";

printf("%s",dd);
}

zengyongheng22 发表于 2011-6-30 12:02:12

10楼道兄弟说的是对的吧
页: [1]
查看完整版本: 帮我看看c 结构体 新手,谢谢