请计算
(1)sizeof (str ) = (2)s i zeof ( p ) =
(3)sizeof ( n ) =
(4)void Func ( char str[100])
{
…… ;
}
请计算sizeof( str ) =
(5)void * p = mall oc( 100 );
(1)sizeof (str ) = (2)s i zeof ( p ) =
(3)sizeof ( n ) =
(4)void Func ( char str[100])
{
…… ;
}
请计算sizeof( str ) =
(5)void * p = mall oc( 100 );
请计算sizeof ( p ) =
#include<stdio.h>
#include<stdlib.h>
void Func ( char str[100])
{
printf("%d\n", sizeof(str));
}
int main()
{
char str[] = "Hello";
char *p = str;
int n = 10;
char string[100] = {0};
void *pstr = malloc(100);
printf("%d\n", sizeof(str));
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(n));
printf("%d\n", sizeof(string));
Func(string[100]);
printf("%d\n", sizeof(pstr));
system("pause");
return 0;
}
分析:
在C/C++里数组作为参数时传递的实际上是指向数组第一个元素的指针,因此sizeof(str)返回的是指针的大小,即4。
int *p=malloc(100); 求 sizeof(p)。sizeof(p) 只能测定 指针大小,32位机上得4。sizeof 不能测定动态分配的数组大小。