为了账号安全,请及时绑定邮箱和手机立即绑定

请问关于c++ sizeof()函数的问题,求解答!

请问关于c++ sizeof()函数的问题,求解答!

C++
繁花不似锦 2021-10-21 15:15:24
如有 char *s="ab\0234\\\n79";执行 sizeof(s);结果是多少?在内存如何存放?请大哥大姐帮忙!
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

首先 sizeof 不是函数 只是一个操作符.sizeof a因为a是数组名,当sizeof作用于一个class 、struct时,返回这些类型对象所占字节数,。当然 有这样一种情况 int a[10] ; void fun(int *a){cout<<sizeof a;}。 fun(a) 出来结果是4 , 数组名作为函数参数时会退化为指针。

查看完整回答
反对 回复 2021-10-24
?
LEATH

TA贡献1936条经验 获得超6个赞

首先声明一下,sizeof在C++中不是函数,它也是一个操作系统,像new、delete一样。
char *s是一个指针,所以sizeof(s) 的结果是s指针本身所占用的真实空间4个字节。
c++标准库的<string.h>头文件下,有一个strlen()函数是用来测定字符串的长度的。你可以试试,它测出的是s所指向的字符串的长度,不是s指针本身的长度。

查看完整回答
反对 回复 2021-10-24
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

先给你看一下转义字符和它对应的意义:
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\” 双引号符
\a 鸣铃
\ddd 1~3 位八进制数所代表的字符
\xhh 1~2 位十六进制数所代表的字符
s 在内存的存放:
a //存放a
b //存放b
\023 //存放八进制为 23 的数
4 //存放 4
\\ //存放反斜线符 \
\n //存放换行
7 //存放 7
9 //存放 9
sizeof(s) 是求指针s本身的大小,一般是4
strlen(s) 才是求s指向的字符串的长度,这里是8



查看完整回答
反对 回复 2021-10-24
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信