易截截图软件、单文件、免安装、纯绿色、仅160KB

c指针溢出问题

刚刚那个怎么被结贴了啊,那我来开个吧。

C/C++ code:

char a='s';
char str[8]="Hello123";

printf("%c", a); //还是S,为什么?
printf("\n%08X %08X\n",&a,&str[8]); //输出一样的地址




上面Hello123后面不是还有'\0',为什么不把a里面的值给挤掉?
char str[8]="Hello123";
你规定了数组大小呀,把数组大小去掉试试

LZ用什么编译器编译通过的?

没问题啊,我不是结果都贴出来了。

用vc编译的

引用
char str[8]="Hello123";
你规定了数组大小呀,把数组大小去掉试试


我就是想看看溢出的时候什么样子的。

&str[8]越界了

没看清出lz的问题,a和str[8]的空间分布由编译器决定,实际上有时编译器的优化会让debug版本和release版本的空间分布不一样。

如果想深入了解编译器的话,可以看一下编译方面的书籍,讨论这个问题由于要考虑多个平台以及优化机制的不同,不建议深入。

引用
&str[8]越界了


知道,我就是想问为什么数组后面的'\0'不会把a里面的值清掉。

在调试窗口里面打开汇编代码看一下不就什么都明白了吗?



引用
没看清出lz的问题,a和str[8]的空间分布由编译器决定,实际上有时编译器的优化会让deb


相关问答:

c基础

#include <string.h>
#include <stdio.h>

void main()
{
int i;
char buf[]="abcde";
strncpy(buf,"abc",3);
for(i=0;i <5;i++)
printf(&q ......

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

两个链表的连接问题 c高手请进

已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列
连接函数有问题 请高手指点
#include <stdio.h>
#include <stdlib.h>
struct student{
int ......

在c版块的你们都从事什么工作?

我看学生比较多...
额是业余的……

偶是业余学生

我本来想学c侵入式学习
可觉得学java容易些
所以改为j2ee方向

看来我的估计是准确的, 因为大部分工作的人都用c++或者java, .NET之类...

c/php/p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号