| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2078 人关注过本帖
标题:对象数组长度的获取问题
只看楼主 加入收藏
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
对象数组长度的获取问题
程序代码:
#include <iostream>
#include <string>
using namespace std;

class Student{
public:
    Student(int n,int s){
        number  = n;
        score   = s;
    }
    void print(){
        cout<<number<<"      "<<score;
    }
private:
    int number;
    int score;
};

void cal_size(Student stu[]){
    cout<<"函数内计算的大小"<<sizeof(stu)<<"---"<<sizeof(stu[0])<<endl;
}
int main(){
    Student stu[5] = {
        Student(1,100),
        Student(2,200),
        Student(3,300),
        Student(4,400),
        Student(5,500)
    };
    cal_size(stu);
    cout <<"函数外计算的大小"<<sizeof(stu)<<"---"<<sizeof(stu[0])<<endl;
    system("pause");
    return 0;
}


输出结果为:
函数外计算的大小8---8
函数外计算的大小40---8

期望结果:
函数外计算的大小40---8
函数外计算的大小40---8
问题:
为什么输出结果函数内计算大小不是40--8?是传参的问题吗?我不明白为什么会出现这样的问题。

[此贴子已经被作者于2017-5-28 20:21编辑过]

搜索更多相关主题的帖子: color number 
2017-05-28 20:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:20 
void cal_size(Student stu[])
等同于
void cal_size( Student* stu )
所以你函数内部sizeof的是一个指针。

改成 数组的引用 试试:
void cal_size( Student (&stu)[5] )
2017-05-28 22:10
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
收藏
得分:0 
回复 2楼 rjsp
用上述方法修改后得到了期望的结果。
开始想到了是sizeof了指针的问题,然而不知道正确形参的写法,。基础有点差。

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-28 23:02
快速回复:对象数组长度的获取问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041072 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved