菜鸟问题?
1.void *p = malloc( 100 ); sizeof( p ) = 4 为什么不等于100
2.void func ( char str[100]) sizeof( str ) = 4 为什么不等于100
3.int n = 10; sizeof( n ) = 4 ?
那位大虾能讲讲么,关于变量空间大小?
问题点数:20、回复次数:6Top
1 楼hhygcy(小楼一夜听春雨)回复于 2004-12-02 20:39:00 得分 10
先申明我不是什么大侠
只是谈谈我的看法
1.void *p 你定义的p是一个void 的指针 指针的sizeof 当然是4
2.void func ( char str[100]) 实际上str也是一个指针 指向了100个char的首地址 所以也是4
3.int n = 10;在不同的平台下可能不一样 你现在可能是windows下 标准的就是4个byte
Top
2 楼LSYLSY(李思)回复于 2004-12-02 20:43:25 得分 10
1. *p是个指针变量,sizeof(p)是求P占用空间的大小,32位机上一般指针(地址)占用4个字节 。
so sizeof (p)=4是对地~~
2.char str[100]是一个函数的形参,在这里可以缩写成 char str[] 或 char * str,和1题是一样的
求sizeof (str)就是求 字符串str首地址占用的空间,so sizeof (str)=4 是对地~~
3.int n=10; n是个整形变量。在32位机中,整形变量占用4个字节的内存空间。so sizeof(n)=4 是对地~~Top
3 楼LSYLSY(李思)回复于 2004-12-02 20:46:17 得分 0
我也不是什么大虾~~~
Top
4 楼chll(霖子)回复于 2004-12-02 21:11:52 得分 0
谢谢指教!给分给分!Top
5 楼Fashionxu()回复于 2004-12-02 21:11:54 得分 0
同意 hhygcy(小楼一夜听春雨) 和 LSYLSY(李思)。
sizeof()是求变量的大小。你的前面两个问题,可能是想得到数组的大小,这样是不行的.Top
6 楼SummerIdea(小菜学编程)回复于 2004-12-02 21:48:34 得分 0
#include <stdio.h>
#include <stdlib.h>
void main()
{
char str[100];
int *p = malloc(100);
int np = sizeof(p);
int ns = sizeof(str); //还是等于100的哈。
int n_int = 10;
sizeof(n_int);
printf("np= %d ns=%d, n_int = %d", np, ns, sizeof(n_int));
getchar();
}Top




