| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 896 人关注过本帖
标题:分配5个字节的内存,sizeof的结果却是4??
只看楼主 加入收藏
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
分配5个字节的内存,sizeof的结果却是4??
#include<stdio.h>
#include<malloc.h>
int main(void)
{
    char *a;
    a=(char *)malloc(5);
    printf("%d",sizeof(a));
    getch();
    return 0;

}结果输出的是4 ,为什么??
搜索更多相关主题的帖子: return include 内存 
2011-12-04 20:56
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:3 
就算你分配100000000000个,照样也是4

a是一个指针变量,win32下会分配4个字节的空间存放。

举一个例子:
void func(char a[])
{
   printf("%d\n", sizeof(a)); //这又是?
}
int main()
{
   char str[] = "hello world";
   printf("%d\n", sizeof(str)); //这是?
   func(str);
   return 0;
}

愿用余生致力编程
2011-12-04 21:05
原味好
Rank: 4
来 自:西安
等 级:业余侠客
帖 子:59
专家分:250
注 册:2011-11-29
收藏
得分:3 
调用malloc函数后返回的是给你分配的内存空间的首地址,所以你输出的是内存地址编号所占的字节数,实际给你分配了5个字节的空间的
2011-12-04 21:10
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:3 
以下是引用我菜119在2011-12-4 21:05:51的发言:

就算你分配100000000000个,照样也是4

a是一个指针变量,win32下会分配4个字节的空间存放。

举一个例子:
void func(char a[])
{
   printf("%d\n", sizeof(a)); //这又是?
}
int main()
{
   char str[] = "hello world";
   printf("%d\n", sizeof(str)); //这是?
   func(str);
   return 0;
}
嗯嗯,对。。这个我也只是明白,但不很了解。。主要有点忘了。。
看看那个c语言进阶一本书里面有

用心做一件事情就这么简单
2011-12-04 22:16
wangkangluo1
Rank: 1
等 级:新手上路
帖 子:4
专家分:9
注 册:2011-12-6
收藏
得分:0 
4 是指针的大小 32位系统 地址刚好4个字节 你到64位系统上看 就是8
2011-12-08 14:34
快速回复:分配5个字节的内存,sizeof的结果却是4??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014740 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved