全面详解sizeof

#include <stdio.h>
using namespace std;

int main(void){
	printf("len_char=%d\nlen_int=%d\nlen_signed_int=%d\nlen_unsigned_int=%d\nlen_short=%d\nlen_long=%d\nlen_float=%d\nlen_double=%d\n", 
	sizeof(char),			// 1
	sizeof(int), 			// 4
	sizeof(signed int),		// 4
	sizeof(unsigned int),	// 4
	sizeof(short),			// 2
	sizeof(long),			// 4 (32位机)  or   8 (64位机)
	sizeof(float),			// 4
	sizeof(double)			// 8
	);
	
	int arr[] = { 1,2,3 };
	char str[] = "123";
	char *str2 = "123";
	int *p= arr;
	char *i=str;
	
	/*
	sizeof(arr), 	// 12 	3*int
	sizeof(str),  	// 4 	3*char+1('\0')
	sizeof(str2),   // 4	非数组指针 占一个int (32位机) or 	8 (64位机)
	sizeof(*arr),  	// 4	int
	sizeof(*str),  	// 1	char
	sizeof(p),     	// 4	非数组指针 占一个int (32位机) or 	8 (64位机)
	sizeof(i),     	// 4	非数组指针 占一个int (32位机) or 	8 (64位机)
	sizeof(*p),    	// 4	int
	sizeof(*i)     	// 1	char
	*/
	
	printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",sizeof(arr), sizeof(str), sizeof(str2),sizeof(*arr), sizeof(*str), sizeof(p), sizeof(i), sizeof(*p), sizeof(*i));
	return 0;
}

char *str2 = "123";char arr[] = {'1','2','3' };以及char arr[] = "123";是不一样的!char *str2 = "123";char arr[] = "123";结尾都有一个'\0'!

具体参见博文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值