帮我看看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}}; 你想问什么,你的数组越界了。。 char[] 定义字符串时,会自动在末尾补上\0 :handshake char[] 定义字符串时,会自动在末尾补上\0
ljj149850508 发表于 2011-6-17 14:56 http://bbs.51testing.com/images/common/back.gif
谁说的?这个是随机的,看申请到的内存块原来是什么,不然干嘛要初始化。按你这编码法,经常会随机出现莫名其妙的问题。这是常识 还随机,还常识。。char数组定义字符串和字符不是一个概念
定义字符串就是自动补0,定义字符不补0
char[]="asdfgh",结果为7
char[]={'a','s','d','f','g','h'},结果为6
不相信自己去试。。
还冒出个随机。。牛啊。。定义都出现随机了,要程序干嘛啊
看来你还没明白字符串和字符的区别。 楼上说的正确。 回复 6# ljj149850508
都说随机了,试个P,那么大的内存,你自己试去吧。你char[],当然会补0,你有本事char ,都只填"abc"给哥看看,你试个N遍试一下,看是不是每次收会补0,内存没用过,当然是初始会补0.等你碰到你会说了 回复 6# ljj149850508
#include<string.h>;
main()
{
char dd;
printf("%s",dd);
}
你试下就知道,看一直都是会无任何显示,还是偶尔会乱码,这个时候申请到的内存,内容都是任意值。 本帖最后由 ljj149850508 于 2011-6-22 15:04 编辑
终于遇见传说中的高手了,不说话 本帖最后由 zengyongheng22 于 2011-6-30 14:29 编辑
不是吧
#include<string.h>
void main()
{
char dd = "456";
printf("%s",dd);
} 10楼道兄弟说的是对的吧
页:
[1]