指针和数组的关系

cokeliu 2006-08-31 08:16:36
char *pBuf;
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
对以上的代码有点不明白. 在第一行中将pBuf定义为指向char类型数据的指针.
在最后一行中.这个指针却成了数组. 指针和数组是有联系.但这个地方却是想不明白.
应该是pBuf往后移动dwFileLen后所指的地方赋值为0. 也就是pBuf=pBuf+dwFileLen. *pBuf=0; 怎么会用pBuf[dwFileLen]=0;表示呢.
...全文
224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
believefym 2006-09-01
  • 打赏
  • 举报
回复
楼主问的问题跟后面的回答有点脱钩了吧 :)
cokeliu 2006-09-01
  • 打赏
  • 举报
回复
在PC编程中可能经常用到.但如果没有pBuf=new char[dwFileLen+1];的话.这句不能随便使用这用这种写法.一般是定义数组.定义数组后.编译器就会分配空间给数组.并不是每种C编译器都支持new的. 如果这里有做硬件嵌入编程的就知道.
shenming123 2006-09-01
  • 打赏
  • 举报
回复
pBuf[n] = *(pBuf + n)
表示方法不一样而已
指针可以用数组的方式来操作.
数组也可以用指针的方式来操作.
jielidu 2006-09-01
  • 打赏
  • 举报
回复
楼主回去去看看书把,这种用法很多时候都用到的
cokeliu 2006-09-01
  • 打赏
  • 举报
回复
想了想.其实这种写法在单片机等嵌入式中用非常危险.因为普通的编译器并不支持new用法.
pBuf=new char[dwFileLen+1];是将pBuf以后的dwFileLen+1地址空间全部划给了pBuf.用户可放心使用该段空间.不会给其他造成混乱.如果用在潜入式C语言编译器中.会莫名其妙地使用别的非法空间.OK.
cokeliu 2006-09-01
  • 打赏
  • 举报
回复
char *pNumber;
pNumber[10]=0x10;
我用以上两句到单片机的C语言编译器编译OK. 原来指针名可以当做数组名来写.
用C语言四年了.还真没有用过这种写法.
cokeliu 2006-09-01
  • 打赏
  • 举报
回复
噢.明白了.
yayafu 2006-08-31
  • 打赏
  • 举报
回复
这是语言规则,你不需要想明白,知道如何做就行了
believefym 2006-08-31
  • 打赏
  • 举报
回复
其实都是地址啊
pBuf[0]表示pBuf指向的首地址内容,pBuf[dwFileLen]就是偏移首地址dwFileLen的那个元素,
数组也是这样来理解的,
弄清楚地址楼主就能明白了
mzyrf 2006-08-31
  • 打赏
  • 举报
回复
你看看书就知道,是可以这么表示的。任何一本关于C++的书的基础知识都有这部分
zhihong123 2006-08-31
  • 打赏
  • 举报
回复
我觉得LZ你应该看看C语言的指针和数组那章,这样讲你还是会很模糊的,如果看了对你理解这点一点都不是问题的.

16,551

社区成员

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

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

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