在程序运行时,一个函数占用一段连续的内存。当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体的代码,完成后返回。
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站建设、赤壁网络推广、小程序定制开发、赤壁网络营销、赤壁企业策划、赤壁品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供赤壁建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
函数指针指向一个函数的入口地址,也就是函数存储空间的首地址。
在C语言中,数组名代表数组的首地址,同样函数名代表了函数的首地址,因此在赋值时,直接将函数指针指向函数名就行了。
因此函数指针调用vs直接调用,占用的存储空间都是一样的。相当于数组指针和数组名的关系,指向的都是同一个数组。
局部变量存在函数体里面,比如转换成8086汇编(示意):
func: 定义变量
push ax
pop ax
ret
main: call func
满意请采纳,谢谢!
在c语言中指针是一个unsigned
类型的无符号数,其所占内存字节一般是和计算机的cpu字长是一致的,拿32位计算机来说,指针所占的内存空间一般为4个字节,不管char
*还是int
*抑或是float
*,都是4个字节。
程序员可以使用sizeof运算符获取数据类型或者某个变量的内存所占字节数。比如
printf("%d\t%d\t%d\n", sizeof(char *), sizeof(int *), sizeof(float *));
函数名是 函数所占内存空间 的首地址,当然也占内存空间啦!跟数组名一样
枚举类型,在C语言中求sizeof,可以先定义一个枚举类型,然后对枚举类型中的元素,或者对类型求size,获取到内存长。
代码如下
#includestdio.h
enum TEST
{
TEST0,
TEST1,
TEST2
};
int main()
{
printf("size of TEST is %d\n", sizeof(TEST));//用类型求大小。
printf("size of TEST is %d\n", sizeof(TEST1));//用元素求大小。
return 0;
}
对于枚举类型,区分是否有负数值,系统会按照unsigned int或int来处理,而是否带符号,并不影响int的占用空间。所以任意枚举类型或枚举变量,占用的空间都是和平台实现时的int类型相同。对于主流的32位/64位平台,枚举类型均占4字节。即sizeof结果为4。