sizeof计算赋值变量和形参的大小

本文探讨了在32位Windows NT环境下,C++中sizeof运算符用于计算赋值变量和函数形参大小的情况。通过示例代码解释了sizeof在不同变量类型如数组、指针、基本类型及动态分配内存时的返回值,强调了其返回的是数据类型所占内存大小而非实际内容的长度。

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

sizeof()几乎在所有笔试中都会出现,我说的是C/C++……

但是各自的考点和考法都不一样

下面讲讲一种少见的考法

在windows NT下32位的C++程序,请计算sizeof的值??

void Func1(char str[100]) //与参数的大小无关
{
 cout<<"str Func str:"<<sizeof(str)<<endl;
}

void Func2(char str) //与参数的大小无关
{
 cout<<"char Func str:"<<sizeof(str)<<endl;
}

 char str[]= "Hello";
 char *p = str;
 char func_str1[100];
 char func_str2;
 int n = 10;
 void *q = malloc( 100 );

请写出它们的值:
 cout<<"str:"<<sizeof(str)<<endl;                    _________
 cout<<"p:"<<sizeof(p)<<endl;                        _________
 cout<<"int:"<<sizeof(n)<<endl;                      _________
 cout<<"malloc q:"<<sizeof(n)<<endl;            _________
 Func1(func_str1);                                          _________
 Func2(func_str2);                                          _________

//计算已经赋值的数据,它的大小就是这个数据类型的大小

//计算形参的大小,也是这个形参数据类型的大小

//不多说

//不直接讲解,看代码,看注释理解吧!代码才是最具说服力的!

#include<iostream>
using namespace std;
void Func1(char str[100]) //与参数的大小无关
{
 cout<<"str Func str:"<<sizeof(str)<<endl; //str[] 大小和指针的大小 一样 4字节
}

void Func2(char str) //与参数的大小无关
{
 cout<<"char Func str:"<<sizeof(str)<<endl; //就是 char 的大小
}
int  main()
{
 //不同数据类型的内存大小,与其赋值无关
 char str[]= "Hello";
 char *p = str;
 char func_str1[100];
 char func_str2;
 int n = 10;
 void *q = malloc( 100 );
 cout<<"str len:"<<strlen(str)<<endl;
 cout<<"str:"<<sizeof(str)<<endl; //长度 + 1(还有一个\0)
 cout<<"p:"<<sizeof(p)<<endl;     //指针
 cout<<"int:"<<sizeof(n)<<endl;   //int
 cout<<"malloc q:"<<sizeof(n)<<endl;//无论开辟多大看空间,都是一个指针的大小
 Func1(func_str1);
 Func2(func_str2);

 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值