在不同对象之间使用sizeof出现的问题。

lostgdi731 2004-08-01 11:37:57
sample code:

class A
{
public:
void add(char* pa){int alen = sizeof(pa);}
a();
......

add(char* pa)
{
int alen = sizeof(pa);
}


-----------------------------------------
#include "A.h"
class B
{
public:
B();
.....

B()
{
A na;
char text[10];
memset(text,'\0',10);
strncpy(text,"test1",5);
int blen = sizeof(text);
na.add(text);
}

为什么在类B里的blen为10,而运行到A类时alen却为4?
如果吧sizeof改为strlen blen==alen。
这是什么回事呢 ?
...全文
121 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
memory_xj 2004-08-01
  • 打赏
  • 举报
回复
sizeof(pa);其实是取得一指针的内存大小,在VC编译系统中,指针都是4字节的。
名牌大灰狼 2004-08-01
  • 打赏
  • 举报
回复
char text[10];//声明了text大小为10的数组.
memset(text,'\0',10);//的意思是让text[0]..text[9] 都为0;出就是出初数组为0
strncpy(text,"test1",5);//写数据.text[0]...[4] 为test1 .([5]..[6])还是为0
int blen = sizeof(text);//所以大小为10了

16,548

社区成员

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

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

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