小艳子 发表于 2021-7-6 11:09:01

一个整型变量占4个字节,为啥我这个是8个?

本帖最后由 小艳子 于 2021-7-6 11:17 编辑

#include<stdio.h>
void get_array(int b);
void get_array(int b){
        int i;
        for(i = 0; i < 10; i++){
                printf("b[%d] =%d\n", i, b);
        }
        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);      \\理论上来说这一步得到的是第一个元素的地址,占4个字符才对,我的运行结果是8个字符。
       
       
        return 0;
}

C:\Users\Administrator\Desktop\1.png

sunrise085 发表于 2021-7-6 11:25:37

在C语言中int类型变量的长度不是固定的,与系统位数和编译器有关。但是在32位或64位系统下都是4字节
但是你的这个程序不涉及int的长度问题,是你自己理解不对。
printf("sizeof b: %d\n", sizeof(b));
得到的不是数组的长度,是指针的长度。指针的长度是固定的,64位编译器下是8字节,32位编译器下是4字节,这是系统的寻址长度。

wp231957 发表于 2021-7-6 11:21:42

哪个和你说int是四个字节

小艳子 发表于 2021-7-6 11:29:26

上课老师就是这么讲的啊,我在网上搜了一下一个int 类型的字符就是4个字节啊。

小艳子 发表于 2021-7-6 12:02:27

sunrise085 发表于 2021-7-6 11:25
在C语言中int类型变量的长度不是固定的,与系统位数和编译器有关。但是在32位或64位系统下都是4字节
但是 ...

感谢大佬!

人造人 发表于 2021-7-6 12:05:42

小艳子 发表于 2021-7-6 11:29
上课老师就是这么讲的啊,我在网上搜了一下一个int 类型的字符就是4个字节啊。

int 类型不是4个字节,标准没有规定int是4个字节
在32位环境下,绝大部分都是4个字节(至少我还没有见过32位环境下不是4个字节的)
注意前提条件,是32位环境下才是4个字节

小艳子 发表于 2021-7-6 12:14:33

人造人 发表于 2021-7-6 12:05
int 类型不是4个字节,标准没有规定int是4个字节
在32位环境下,绝大部分都是4个字节(至少我还没有见过 ...

非常感谢解答
页: [1]
查看完整版本: 一个整型变量占4个字节,为啥我这个是8个?