51Testing软件测试论坛

标题: 帮我看看c 结构体 新手,谢谢 [打印本页]

作者: 51testing49xqy    时间: 2011-6-16 15:06
标题: 帮我看看c 结构体 新手,谢谢
[code]int i;
struct Accout
{   
        char id[4];
        char passwd[4];
        int balance;
} acc[3] = {{"456\0","456\0",4300},{"123\0","123\0",4000}, {"789\0","789\0",6000}};
作者: ljj149850508    时间: 2011-6-17 14:48
你想问什么,你的数组越界了。。
作者: ljj149850508    时间: 2011-6-17 14:56
char[] 定义字符串时,会自动在末尾补上\0
作者: r131415    时间: 2011-6-17 22:42

作者: outdahua    时间: 2011-6-18 14:18
char[] 定义字符串时,会自动在末尾补上\0
ljj149850508 发表于 2011-6-17 14:56



    谁说的?这个是随机的,看申请到的内存块原来是什么,不然干嘛要初始化。按你这编码法,经常会随机出现莫名其妙的问题。这是常识
作者: ljj149850508    时间: 2011-6-20 09:11
还随机,还常识。。char数组定义字符串和字符不是一个概念
定义字符串就是自动补0,定义字符不补0
char[]="asdfgh",结果为7
char[]={'a','s','d','f','g','h'},结果为6
不相信自己去试。。
还冒出个随机。。牛啊。。定义都出现随机了,要程序干嘛啊
看来你还没明白字符串和字符的区别。
作者: xrh51testing    时间: 2011-6-21 18:06
楼上说的正确。
作者: outdahua    时间: 2011-6-22 13:57
回复 6# ljj149850508


    都说随机了,试个P,那么大的内存,你自己试去吧。你char[],当然会补0,你有本事char [4],都只填"abc"给哥看看,你试个N遍试一下,看是不是每次收会补0,内存没用过,当然是初始会补0.等你碰到你会说了
作者: outdahua    时间: 2011-6-22 14:09
回复 6# ljj149850508


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

printf("%s",dd);
}
你试下就知道,看一直都是会无任何显示,还是偶尔会乱码,这个时候申请到的内存,内容都是任意值。
作者: ljj149850508    时间: 2011-6-22 15:03
本帖最后由 ljj149850508 于 2011-6-22 15:04 编辑

终于遇见传说中的高手了,不说话
作者: zengyongheng22    时间: 2011-6-30 12:01
本帖最后由 zengyongheng22 于 2011-6-30 14:29 编辑

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

printf("%s",dd);
}
作者: zengyongheng22    时间: 2011-6-30 12:02
10楼道兄弟说的是对的吧




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2