指针和字符数组的问题。

hnyztzh 2011-12-09 11:42:15
代码如下:

LPCTSTR pszFile = _T(".\\Config.ini");

CHAR tszBuf [1024]; ZeroMemory(tszBuf,sizeof(tszBuf));
DWORD dwReturn = GetPrivateProfileSectionNames(tszBuf,1024,pszFile);
if(dwReturn ==0) return;

char* pszTemp = tszBuf -1; // 这句话是什么意思 ?这样赋值不会越界么?
MessageBox(pszTemp);

我用MessageBox打印显示是空。 请专家帮忙看看!
...全文
84 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dahaiI0 2011-12-09
  • 打赏
  • 举报
回复
我是来看9楼的,其他的。。关我蛋事。
ganghuige 2011-12-09
  • 打赏
  • 举报
回复
二逼代码,回贴完毕..
wyx100 2011-12-09
  • 打赏
  • 举报
回复
char* pszTemp = tszBuf;
是pszTemp 指向tszBuf的首地址
char* pszTemp = tszBuf-1;
pszTemp 指向的地址就不知道了吧
yhp1888 2011-12-09
  • 打赏
  • 举报
回复
tszBuf在GetPrivateProfileSectionNames()改变了。tszBuf -1就是到前一个。

yayafu 2011-12-09
  • 打赏
  • 举报
回复
char* pszTemp = tszBuf -1;看来是错的,谁写的代码哦,别管它了,浪费时间
ok1234567 2011-12-09
  • 打赏
  • 举报
回复
char* pszTemp = tszBuf -1; // 这句话是什么意思 ?这样赋值不会越界么?

这是葵花宝典用法
别这样折腾!

单说一个指针变量,不过是一个整数,都合法
越界的问题,是逻辑概念,不是句法概念:)
jiuzhoulh 2011-12-09
  • 打赏
  • 举报
回复
char* pszTemp = tszBuf;
是pszTemp 指向tszBuf的首地址
char* pszTemp = tszBuf-1;
pszTemp 指向的地址就不知道了吧
glovel0425 2011-12-09
  • 打赏
  • 举报
回复
char* pszTemp = tszBuf -1; 就是tszBuf [1024] 的前一位的地址。具体啥意思要看程序的
hnyztzh 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 glovel0425 的回复:]
tszBuf 是 tszBuf [1024] 的首地址,pszTemp 是tszBuf 的前一位,由于你不知道tszBuf 的前一位是什么,有可能是别的值有可能没值,所以输出才会是空。
[/Quote]

这样说来,如果要操作这个字符数据,就是这个定义就是越界了。

那这句话 char* pszTemp = tszBuf -1; 啥意思勒 ?
glovel0425 2011-12-09
  • 打赏
  • 举报
回复
tszBuf 是 tszBuf [1024] 的首地址,pszTemp 是tszBuf 的前一位,由于你不知道tszBuf 的前一位是什么,有可能是别的值有可能没值,所以输出才会是空。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧