回 帖 发 新 帖 刷新版面

主题:变量问题

我写的 int i;在还没有初始化之前就有了一个正整数值,这个我就搞不懂了,按我的想法应该是i=0把。
还有下面一段程序:
            if(判断条件)
            {
                //const char *szPicName = StrCat(ExtractFilePath(ParamStr(0)).c_str(),"PicTemp\\ptmp.jpg");
               czPicTemp=(char *)malloc(lTagSize[0]-6);

                
               //若干操作文件的语句
                char *szPicName = StrCat(ExtractFilePath(ParamStr(0)).c_str(),"PicTemp\\ptmp.jpg");

                fpPicTemp=fopen(szPicName,"wb");
                //将czPicTemp中的内容写入szPicName中
                fclose(fpPicTemp);

                free(czPicTemp);

            }

把szPicName变量声明放在我注销的地方在fopen里面就会是乱码(显示E2451 Undefined symbol'szPicName'),但是把变量声明放在fopen前面就没有问题。这个是为什么?请高手给我回答一下。系统为2000pro sp4

我是在BCB6中调试的程序

回复列表 (共4个回复)

沙发

const char *szPicName, *szPicName = 。。。。。

你的szPicName不能改变了吧

板凳

不是这样的!你在用 int i时虽然没有初始化,但是系统已经给你分配空间了!而且i的值是i系统内存原来的值,而并不等于0,是一个不可预知的,这样用相当的危险!

3 楼


加上Const还是一样的问题

4 楼

if(判断条件)
            {
               int fpPicTemp; 
               char *szPicName = StrCat(ExtractFilePath(ParamStr(0)).c_str(),"PicTemp\\ptmp.jpg");
               czPicTemp=(char *)malloc(lTagSize[0]-6);

                
               //若干操作文件的语句
                szPicName = StrCat(ExtractFilePath(ParamStr(0)).c_str(),"PicTemp\\ptmp.jpg");

                fpPicTemp=fopen(szPicName,"wb");
                //将czPicTemp中的内容写入szPicName中
                fclose(fpPicTemp);

                free(czPicTemp);

            }

我来回复

您尚未登录,请登录后再回复。点此登录或注册