在不同对象之间使用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。
这是什么回事呢 ?
...全文
53 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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了
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-01 11:37
社区公告

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