投入就放过 发表于 2022-2-26 16:22:24

c语言 函数问题

#include <stdio.h>

void get_array(int b);

void get_array(int b)
{
      int i;

      printf("sizeof b: %d\n", sizeof(b));
}

int main()
{
      int a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

      printf("sizeof a: %d\n", sizeof(a));
      get_array(a);                                       //使用这个函数后怎么在我的电脑打出来结果是8呢 ,一个int类型不是就是4个字节吗?

      return 0;
}

isdkz 发表于 2022-2-26 16:24:04

本帖最后由 isdkz 于 2022-2-26 16:30 编辑

因为你给函数传递进去的是 a 数组的指针,它的指针占 8 个字节

#include <stdio.h>

void get_array(int b);

void get_array(int b)
{
      int i;
      printf("sizeof b: %d\n", sizeof(b));    // 此时的 b 是传进来的数组指针
      printf("sizeof b: %d\n", sizeof(b));// 要打印它里面元素的字节数,你可以换成 b
}

int main()
{
      int a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

      printf("sizeof a: %d\n", sizeof(a));
      printf("sizeof &a: %d\n", sizeof(&a));       // 你可以打印一下 a 的指针的大小
      get_array(a);                                       //使用这个函数后怎么在我的电脑打出来结果是8呢 ,一个int类型不是就是4个字节吗?

      return 0;
}

投入就放过 发表于 2022-2-26 16:42:52

isdkz 发表于 2022-2-26 16:24
因为你给函数传递进去的是 a 数组的指针,它的指针占 8 个字节

但是为什么例题打出来是4呢

isdkz 发表于 2022-2-26 16:47:34

本帖最后由 isdkz 于 2022-2-26 16:48 编辑

投入就放过 发表于 2022-2-26 16:42
但是为什么例题打出来是4呢

可能是因为用的是 32 位的系统,对应 4 个字节,
64 位的系统对应 8 个字节,
你可以看一下这个:
https://zhidao.baidu.com/question/2610961.html

投入就放过 发表于 2022-2-26 16:49:30

isdkz 发表于 2022-2-26 16:47
可能是因为用的是 32 位的系统,对应 4 个字节,
64 位的系统对应 8 个字节,
你可以看一下这个:


好的 谢谢
页: [1]
查看完整版本: c语言 函数问题