论坛首页 编程语言技术论坛

一个C语言指针问题

浏览 17646 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-27   最后修改:2011-06-27
一个容易犯的错误
CString ReadSomething()
{
   CString str;
   str.format(_T("%s"),"abcdef");
   return str;
}


你会发现有时候是abcdef,有时候是别的东东,这是java程序员写C/C++容易犯的错误
0 请登录后投票
   发表时间:2011-06-27  
感觉 这跟中国的"走进科学"节目一样,
"这个是一个很诡异的C程序"
诡异在何处?
哦,楼主还拿出那么多科学证明过程,
最后的结果是,楼主原来是C语言不好

就像中国西部发生的一件很诡异的事情
一个农民家每天早晨起来都发现鞋子再床上,
经过专家研究,探讨,最后得出结论是,这个农民晚上没洗脚,并且是穿鞋子睡觉的


0 请登录后投票
   发表时间:2011-06-27  
没有分配空间吗?
刚声明完的指针,会指向那个地址呢?这个问题得问编译器。
0 请登录后投票
   发表时间:2011-06-27  
williamy 写道
感觉 这跟中国的"走进科学"节目一样,
"这个是一个很诡异的C程序"
诡异在何处?
哦,楼主还拿出那么多科学证明过程,
最后的结果是,楼主原来是C语言不好

就像中国西部发生的一件很诡异的事情
一个农民家每天早晨起来都发现鞋子再床上,
经过专家研究,探讨,最后得出结论是,这个农民晚上没洗脚,并且是穿鞋子睡觉的




哈哈,lz应该把《c和指针》多看几遍,野指针而已,基础不扎实,觉得什么都诡异。
0 请登录后投票
   发表时间:2011-06-27  
这个如果情况属实,不是野指针这么简单,栈上分配的指针刚好内容是栈上其他变量的地址,这个巧合概率太低
原来以为是优化导致的栈上变量被寄存器替换导致i,p可能用的同一个寄存器,但是实际编译发觉也不可能出现这种情况
0 请登录后投票
   发表时间:2011-06-27  
pujia12345 写道
新手 小白吧

p你只定义了一个指针,没有分配变量空间,运行中无意占用了i的空间。

这都不清楚?

一般这样
char str[128];
char * p=str;
strcpy(p,a);



估计是老师教的不好,指针是c语言基础一定要扎实.
0 请登录后投票
   发表时间:2011-06-27  
坑爹啊,这C程序写的,一个野指针,你就敢当参数传进去,写内存,还诡异?
0 请登录后投票
   发表时间:2011-06-27   最后修改:2011-06-27
看到这个帖子让我想起了以前遇到的一个问题!那个问题让我加深了对C语言指针初始化的必要性意识。

首先是定义了一个指针,是忘记了指针初始化。后面经过一系列的操作之后,对该指针进行释放,结果把别的结构体释放掉了一半,这个问题就很奇怪了,被释放的结构体数据错乱了,在经过几天的努力,终于找到了这个问题!当时就真的非常郁闷!后来就习惯性的在定义任何指针的时候都给他置空!

其实LZ这个问题没什么研究的!关于这个指针默认值是怎么分配的,这个和编译器有关,和上下文也有关!
0 请登录后投票
   发表时间:2011-06-27  
哎,典型的缓冲区溢出造成的。。。
0 请登录后投票
   发表时间:2011-06-27  
(⊙o⊙)…只是学习过程中碰到的问题做个记录,各位轻拍,还请给新手多一些耐心和指教,不过这个标题的确起的很烂
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics