pdwdzz 发表于 2022-9-30 09:56 好像懂了,感谢,如楼上,要去补汇编了 |
sizeof():关于sizeof()的介绍网上有很多详细的资料, 这是一个操作符,所以使用时不必添加头文件。 可以对数值和类型进行操作,返回的值是size_t类型。 size_t类型在C51编译器的stddef.h中如是定义: #ifndef _SIZE_T #define _SIZE_T typedef unsigned int size_t; #endif ![]() 试改为printf("%u\n",sizeof(k)); |
我来解答你的疑问; 先来说printf("%d",a);这条函数。里边a是什么?是变量。更本质的说是什么?是一个变量的名称。更更本质的是什么?是一个地址。函数中一切对a的操作,本质都是去操作a所在的地址。假设a的地址是0x00;那printf("%d",a);和printf("%d",0x00);没什么两样。 然后再来说sizeof();他不是函数,只是一个预处理。出来的本质是一个常亮。如上你是sizeof(k),就是常量2。那printf("%d",sizeof(k));就是printf("%d",2);即把2这个地址里的数据输出,地址2里边存着什么,你未初始化,随机! |
要想真正地了解为什么?学会汇编才行,否则只参看函数的注解,注解不到的,你就……。 打开编译后的汇编程序,逐句分析,一定能找到原因。 |