sizeof的各项测试

    首先要明确sizeof不是函数,也不是一元运算符,它是个类似宏定义的特殊关键字,sizeof()。括号的内容在编译过程

中是不被编译的,而是被替代的类型,如int a = 8;sizeof(a)。在编译过程中,不管a的值是什么,只是被替换成类型

sizeof(int),结果为4.如果sizeof(a = 6)呢?也是一样的转换成a的类型。但是要注意,因为a = 6是不被编译的,所以执

行完sizeof(a = 6)后,a的值没有改变。

    以下的几个结论:

    (1)unsigned影响的只是最高位bit的意义(正/负),数据长度是不会改变的

    (2)自定义类型的sizeof取值等同于它的类型原型。

    (3)对函数使用sizeof,在编译阶段会被函数返回值的类型取代。

    (4)只要是指针,大小就是4。

    (5)数组的大小各维数的乘积 * 数组元素的大小。

    

#include<iostream>
#include<malloc.h>
using namespace std;

int main()
{
	char *ss1 = "0123456789";
	char ss2[] = "0123456789";
	char ss3[100] = "0123456789";
	int ss4[100];
	char q1[] = "abc";
	char q2[] = "a\n";
	char* q3 = "a\n";
	char *str1 = (char*)malloc(sizeof(char)*100);
	void *str2 = (void*)malloc(sizeof(char)*100);

	cout<<sizeof(ss1)<<endl;
	cout<<sizeof(ss2)<<endl;
	cout<<sizeof(ss3)<<endl;
	cout<<sizeof(ss4)<<endl;
	cout<<sizeof(q1)<<endl;
	cout<<sizeof(q2)<<endl;
	cout<<sizeof(q3)<<endl;
	cout<<sizeof(str1)<<endl;
	cout<<sizeof(str2)<<endl;
	return 0;
}
4
11
100
400
4
3
4
4
4
请按任意键继续. . .

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值