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编译的
我就是想看看溢出的时候什么样子的。
&str[8]越界了
没看清出lz的问题,a和str[8]的空间分布由编译器决定,实际上有时编译器的优化会让debug版本和release版本的空间分布不一样。
如果想深入了解编译器的话,可以看一下编译方面的书籍,讨论这个问题由于要考虑多个平台以及优化机制的不同,不建议深入。
知道,我就是想问为什么数组后面的'\0'不会把a里面的值清掉。
在调试窗口里面打开汇编代码看一下不就什么都明白了吗?
相关问答:
#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 ......
以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......
已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列
连接函数有问题 请高手指点
#include <stdio.h>
#include <stdlib.h>
struct student{
int ......
我看学生比较多...
额是业余的……
偶是业余学生
我本来想学c侵入式学习
可觉得学java容易些
所以改为j2ee方向
看来我的估计是准确的, 因为大部分工作的人都用c++或者java, .NET之类...
c/php/p ......