首页 > 试题广场 >

下面函数的执行结果是输出?

[单选题]
下面函数的执行结果是输出
func(char para[100])
{
    void *p = malloc(100);
    printf("%d, %d\n", sizeof(para), sizeof(p));
}

  • 4,4
  • 100,4
  • 4,100
  • 100,100
推荐
答案:A
对于形参char para[100],其实参传递进来的是数组的地址,在32位系统中sizeof(para)=4
对于指针p,是连续100字节空间的首地址,sizeof并不知道这个连续空间有多大,sizeof得到的是这个指针变量的大小,是4字节
编辑于 2015-01-27 15:05:18 回复(6)
数组做函数参数时,当做普通指针来用!切记
发表于 2015-07-28 08:29:28 回复(0)
数组作函数参数时候退化为指针,char para[100];cout << sizeof(para);不作参数传递时候,输出是100
发表于 2017-06-05 09:57:18 回复(1)
mgh头像 mgh
数组做函数参数时,sizeof 为普通指针大小
若直接对数组 sizeof 则结果为数组总长
vs2010实测:

void f(char b[100]){
    printf("sizeof in f: %d\n", sizeof(b));
}

int main(){   char p[100];
    printf("sizeof in main: %d\n", sizeof(p));
    f(p);
}
结果输出:
sizeof in main: 100
sizeof in f: 4
编辑于 2017-03-14 23:06:08 回复(2)
选A。 形参尽管写成数组形式,但编译器把这类形式的认为是指针。数组形式是为了增加可读性,让人能好理解,明白传递过来的是数组。 p开辟了空间,但它仍然是指针。 所以对两个指针求大小都是4,在32位平台下。
发表于 2018-05-24 15:30:38 回复(0)
忘了,para数组名是指针……
发表于 2018-04-27 01:38:40 回复(0)
数组做函数参数时,当做普通指针来用!切记
发表于 2020-06-23 22:28:33 回复(0)
<p>数组作为一个函数参数时,退化为一个指针</p><p><br></p>
发表于 2020-06-12 16:40:21 回复(0)
数组名本质就是指向该数组的一个常指针(是一个地址),故size of(para) =4;
发表于 2019-11-06 22:21:38 回复(0)
数组作为参数使用退化为普通指针。切记切记╮(╯_╰)╭
发表于 2019-09-13 13:55:41 回复(0)
*p指向的是这100个字节内存的首地址,并不知道它所指向内存的大小
发表于 2019-04-23 17:40:06 回复(0)
对于形参char para[100],其实参传递进来的是数组的地址,在32位系统中sizeof(para)=4 对于指针p,是连续100字节空间的首地址,sizeof并不知道这个连续空间有多大,sizeof得到的是这个指针变量的大小,是4字节
发表于 2019-03-29 01:31:22 回复(0)

数组做参数,会退化为指针

发表于 2019-02-27 08:51:27 回复(0)
对形参是数组的参数,编译器把它当做普通的指针变量来使用,所以为4 对于malloc函数动态分配堆空间,函数执行完结果是在内存中开辟一段连续的,指定大小的地址空间,并首地址保存在寄存器eax中,返回赋值给指针变量p,所以也是4
发表于 2018-03-05 23:28:29 回复(0)
数组做函数参数时,转换为指针
发表于 2017-09-07 20:00:08 回复(0)
para是指向数组首地址的指针
发表于 2017-07-26 11:05:50 回复(0)
数组做函数参数时,当做普通指针来用!
对于指针p,是连续100字节空间的首地址,sizeof并不知道这个连续空间有多大,sizeof得到的是这个指针变量的大小,是4字节
发表于 2017-07-17 21:07:32 回复(0)
数组作为函数实参时退化为指针。
发表于 2017-04-27 11:58:34 回复(0)
void* p = malloc(100);
指针p,是连续100字节空间的首地址
void* 可以看做一个integeral type.
sizeof(void*)是取决于这个整形量有多少个字节而不是取决于其指向了啥决定的。
void*有多大看编译器目标平台类型。
sizeof并不知道这个连续空间有多大,sizeof得到的是这个指针变量的大小,是4字节
发表于 2016-10-18 20:42:12 回复(0)
char para[100]相当于一个指针,占4个内存空间!
发表于 2016-06-14 15:43:47 回复(0)
A
地址,指针大小为4字节
发表于 2015-01-18 17:02:00 回复(0)