为什么输出s的大小为4

为什么输出s的大小为4

#include <iostream>
#include <string>
using namespace std;
int main()
{
    char sd[][10]={"begin","moring","afternoon"};
    //定义数组指针
    char (*s)[10]=sd;
    //使用数组指针输出字符串
    for(int i=0;i<3;i++,s++)
    {
       cout<<*s<<endl;
    }
    cout<<sizeof(s);
    return 0;
}

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好,sizeof有三种语法形式:

1)  sizeof (object);  //sizeof (对象)

2)  sizeof object;   //sizeof 对象

3)  sizeof (type_name);  //sizeof (类型)

对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。

sizeof对对象求内存大小,最终都是转换为对对象的数据类型进行求值。

sizeof (表达式); //值为表达式的最终结果的数据类型的大小

 

举例:

int i;  
sizeof(int); //值为4  
sizeof(i); //值为4,
等价于sizeof(int)  sizeof i; //值为4 
 sizeof(2); //值为4,
 等价于sizeof(int),因为2的类型为int  
 sizeof(2 + 3.14); //值为8,等价于sizeof(double),
 因为此表达式的结果的类型为double 
  char ary[sizeof(int) * 10]; //OK,编译无误

老师运行您的代码结果为8,

http://img1.sycdn.imooc.com//climg/5bb8202c0001c74f10300268.jpg

建议使用不同环境运行测试,如果解决您的问题请采纳,祝学习愉快!

 


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       594    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师