c++中关于sizeof的用法

本文详细解析了C++中指针与字符串的基本概念,包括字符指针、数组与字符串的区别,以及如何正确使用`sizeof`、`strlen`函数与指针运算符。同时,介绍了不同数据类型指针的特性及其在内存分配和访问上的差异。

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

1、char* ss = "0123456789"; 

 sizeof(ss) 结果4 ===》ss是指向字符串常量的字符指针

sizeof(*ss) 结果1 ===》*ss是第一个字符 。

2、char ss[] = "0123456789"; 

sizeof(ss)结果11 ===》ss是数组,计算到\0位置,因此是10+1 

  sizeof(*ss) 结果1 ===》*ss是第一个字符 。

3、char   ss[100] = "0123456789"; 

sizeof(ss)结果是100 ===》ss表示在内存中的大小 100×1

strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前。

4、int  ss[100] = "0123456789"; 

sizeof(ss) 结果400 ===》ss表示再内存中的大小100×4

strlen(ss) 错误==》strlen的参数只能是char* 且必须是以''\0''结尾的。

5、char q[]="abc";     char p[]="a\n"; 

sizeof(q),sizeof(p),strlen(q),strlen(p); 结果是 4 3 3 2。

6、class X 

inti; int j; char k; 

};

X x; 

cout<<sizeof(X)<<endl; 结果12 ===》内存补齐

cout<<sizeof(x)<<endl; 结果12 同上

7、int a=100

sizeof(char)*a 怎么理解?结果100   100char 类型占用的字节数.初看*还以为是指针呢,原来是乘号。这样就很好理解了。 

sizeofchar)求字符型的长度啊。乘以100100char类型占用的字节数。

8、sizeof(char *)=4;sizeof(int *)=4 sizeof(double *)=4; 怎么指针都一样?

因为any指针都是一个long型值 

在32位机上,所有的指针都是4字节的 (指针保存地址,为int型)

char *p="ab";

问sizeof(*p) 是多少?

请高人详细指点,我是底层软件工程师.

sizeof(*p)是1,因为p是指向字符串的指针,

*p是a,所以sizeof(*p)是sizeof(a)的意思,

所以是1 。而sizeof(p)是4,因为p是字符型的指针,它存放的是字符串的地址,既然是存放一个地址,

 那么就和int什么的一样,是四个字节

sizeof(char *)=4;sizeof(int *)=4 sizeof(double *)=4; 

怎么指针都一样?

因为any指针都是一个long型值 

在32位机上,所有的指针都是4字节的 (指针保存地址,为int型)

char *p="ab";

问sizeof(*p) 是多少?

请高人详细指点,我是底层软件工程师.

sizeof(*p)是1,因为p是指向字符串的指针,

*p是a,所以sizeof(*p)是sizeof(a)的意思,

所以是1 。而sizeof(p)是4,因为p是字符型的指针,它存放的是字符串的地址,既然是存放一个地址,

 那么就和int什么的一样,是四个字节

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值