Chinaunix
标题:
请问:一个字符串的问题
[打印本页]
作者:
netdoger
时间:
2016-06-20 15:31
标题:
请问:一个字符串的问题
请看:
char str[1];
strcpy(str,"Hello World");
printf("str=%s\n",str);
printf("str=%c %c %c %c %c\n",str[0],str[1],str[2],str{3],str[4],str[5]);
我觉得很奇怪,char str[1]定义只有一个字符,为什么
strcpy(str,"Hello World");不会出错?
另外:str只有定义一个字符,为什么
str[0],str[1],str[2],str{3],str[4],str[5]也能输出?
系统难道不检查吗?这样写代码可以吗
作者:
windoze
时间:
2016-06-20 15:38
尽管有一堆法律法规,可是红灯依然拦不住行人乱穿马路。
很大概率你不会被撞死。
作者:
netdoger
时间:
2016-06-20 16:06
回复
2#
windoze
什么意思?能不能说说这些代码怎么回事
作者:
hellioncu
时间:
2016-06-20 16:46
你把"Hello World"改得很长一般就会出错了
作者:
残愚
时间:
2016-06-21 09:14
lea 0xffffffffffffffef(%rbp), %rax
movl $0x6c6c6568, (%rax) //lleh 我的程序里是“hello world”,不是“Hello world”
movl $0x6f77206f, 0x4(%rax) //ow o
movl $0x646c72, 0x8(%rax)//dlr
lea 0xffffffffffffffef(%rbp), %rsi
mov $0x400668, %edi
mov $0x0, %eax
callq 400398 <printf@plt>
movzbl 0xfffffffffffffff9(%rbp), %eax
movsbl %al, %edx
movzbl 0xfffffffffffffff8(%rbp), %eax
movsbl %al, %ecx
movzbl 0xfffffffffffffff7(%rbp), %eax
movsbl %al, %esi
movzbl 0xfffffffffffffff6(%rbp), %eax
movsbl %al, %edi
movzbl 0xfffffffffffffff5(%rbp), %eax
movsbl %al, %r8d
movzbl 0xfffffffffffffff4(%rbp), %eax
movsbl %al, %r9d
movzbl 0xfffffffffffffff3(%rbp), %eax
movsbl %al, %r10d
movzbl 0xfffffffffffffff2(%rbp), %eax
movsbl %al, %r11d
movzbl 0xfffffffffffffff1(%rbp), %eax
movsbl %al, %ebx
movzbl 0xfffffffffffffff0(%rbp), %eax
movsbl %al, %r12d
movzbl 0xffffffffffffffef(%rbp), %eax
movsbl %al, %eax
复制代码
作者:
cjfeii
时间:
2016-07-22 16:40
系统分配内存的时候,不是一个字节一个字节分配的。
作者:
cjfeii
时间:
2016-07-24 10:10
你可以试一下2楼的做法,可能会得到崩溃的结果。
尽量不要这样用,在不同的环境下你可能得到的结果是不同的,这种不确定性要尽量在我们的程序中去避免。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2