传入首地址用值传递的符,到底是地址传递还是值传递

#include<iostream>
using namespace std;

struct xueshen
{
    string name;
    int score;
};
struct teacher
{
    string name;
    struct xueshen sarr[5];

};
void hain(teacher asarr[], int len)
{
    string name = "ABCDE";
    for (int i = 0; i < len; i++)
    {
        asarr[i].name = "teacher_";
        asarr[i].name += name[i];
        for (int j = 0; j < 5; j++)
        {
            asarr[i].sarr[j].name = "xueshen_";
            asarr[i].sarr[j].name += name[j];
            int random = rand() % 61 + 40;
            asarr[i].sarr[j].score = random;
        }
    }
};
void shuc(teacher asarr[], int len)        // 很好奇,asrra[]这个是地址传递进去的
{
    for (int i = 0; i < len; i++)
    {
        cout << "老师的名字是:  " << asarr[i].name << endl;  //这里的输出没有用->而是 .  所以这到底是什么
        for (int j = 0; j < 5; j++)
            cout<< "\t学生的名字是 :" << asarr[i].sarr[j].name << "考试分数为: "<<asarr[i].sarr[j].score << endl;
    }
}
int main() {
    teacher  asarr[3];
    int len = sizeof(asarr) / sizeof(asarr[0]);
    hain(asarr, len); 
    shuc(asarr, len);
   /* for (int a = 0; a < 3; a++)                  //因为想看到底是值传递还是地址传递所以进行输出,,,结果不会了
    {
           for (int b = 0; b < 5; b++) 
           {
            cout << "老师的名字是:  " << asarr[a] << endl;    //报错
        }
    }*/
    system("pause");
    return 0;
}

 

这里是在做一道练习题,关于一个老师带五个学生,随机数的分数

cout << "老师的名字是:  " << asarr[a].name << endl;   ---asarr[a]是teacher数据结构,老师名字是数据结构中的一个成员

void shuc(teacher asarr[], int len)        第一个参数是一个数组参数,实际就是个指针,但要求是指向teacher数据结构的

cout << "老师的名字是:  " << asarr[i].name << endl;  //这里的输出没有用->而是 .  所以这到底是什么

asarr[i]是teacher数据结构,所以用.

teacher *p = &asarr[i];

p->name;

这样才是用->,前面必须是指针对象

是因为,你说的数据结构,,,他虽然是地址传递,但对应的都是数据结构不是值,是这个意思吗?

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html