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