sizeof() 的使用

本文深入探讨了sizeof()函数在C/C++编程中的使用方法及常见应用场景,包括变量、函数、数组等元素的长度计算,以及在面试中的重要性。通过示例代码展示了sizeof()在不同场景下的应用,帮助读者掌握这一核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sizeof()  他是运算符, 而不是函数。不能被表象所迷惑,虽然他有一个括号,但是他确实不是函数。
他可以用于求各种变量,函数等所有可以表示出来的东西的长度。
例如:

       sizeof(fun()); 

       void fun() {}
       这个也是被允许的, 求出来的结果是1 。

写这些主要是加深对sizeof() 的记忆力。在现在的公司招聘中,sizeof() 已经开始占据着一种很重要的位置。
很多公司都乐此不彼的出一些sizeof() 相关的题来考考应聘者。
其中以下是常见的几种示例。这里以代码的形式表现出来:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

double fun()
{
	printf("hello world...");
	return 0;
}

void fun1(char s[])
{
	printf("sizeof(s) = %d\n",sizeof(s));
}


int main()
{
	printf("\n********************************************************\n");
	// 出现的概率最高
	char a[] = "abcdef";
	char aa[10] = "abcdef";
	printf("sizeof(a) = %d\tsizeof(aa) = %d\n", sizeof(a), sizeof(aa));
	printf("strlen(aa) = %d\n", strlen(aa));
	
	printf("\n********************************************************\n");
	// 深入点,必考
	char *p = a;
	printf("sizeof(*p) = %d\tsizeof(p) = %d\n", sizeof(*p), sizeof(p));
	
	// 对上面进行巩固,int 跟char 是一样的
	int b[10];	
	printf("%d\n", sizeof(b));
	
	printf("\n********************************************************\n");
	// sizeof 对函数也是通杀
	printf("sizeof(fun) = %d\n", sizeof(fun));	// 1        这个很有意思(还不明了)
	printf("&fun = %p\n", fun);
	printf("sizeof(fun()) = %d\n", sizeof(fun()));	// 8     这个也很有意思(这个是返回值的长度)
	
	printf("\n********************************************************\n");
	// 指针的时候情况又是怎样呢?
	char *str1 = "abcde";
	char str2[10]="abc";
	char *q = malloc(100);
	printf("sizeof(q) = %d\n", sizeof(q));
	printf("sizeof(str1) = %d\n", sizeof(str1));	// sizeof 包含'\0'
	printf("strlen(str1) = %d\n", strlen(str1));	// strlen 不包含'\0'
	printf("sizeof(str2) = %d\n", sizeof(str2));
	printf("sizeof(\"abc\") = %d\n", sizeof("abc"));
	
	
	printf("\n********************************************************\n");
	// 调用函数中会将数组转换为指针,故而是4
	fun1(a);
	
	return 0;
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值