我做了c++代码,它需要在函数中传递结构指针

dpiehjr4  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(142)

当我需要在函数中传递值时,我对结构感到困惑

#include <iostream>
using namespace std;

struct student
{
    int studentID;
    char studentName[30];
    char nickname[10];
};

void read_student(struct student *);
void display_student(struct student *);

int main()
{

    student *s;
    //struct student *ps;
    read_student(s);

    display_student(s);

}

void read_student(struct student *ps)
{
    int i;
    for (i = 0; i <= 2; i++)
    {
        cout << "Enter the studentID : ";
        cin >> ps->studentID;
        cout << "Enter the full name :";
        cin.ignore();
        cin >> ps->studentName;
        cout << "Enter the nickname : ";
        cin.ignore();
        cin >> ps->nickname;
        cout << endl;

    }
}

void display_student(struct student *ps)
{
    int i;
    cout << "student details :" << endl;

    for (i = 0; i <= 2; i++)
    {
        cout << "student name : " << *ps ->studentName << " (" << &ps ->studentID << ")" << endl;

        ps++;
    }
}

它唯一的问题在第19行的变量,当我试图编辑它将成为更多的问题

student *s;
 //struct student *ps;

  //struct student *ps;
  read_student(s);
  display_student(s);

也可以有人解释如何将结构的指针值传递给函数,并将其返回给主函数

2lpgd968

2lpgd9681#

你正在忍受着C语言时代的一些残余。而且,你还不明白指针是如何工作的。
一个指针(就像它的名字说的那样)指向某个东西。在main中,你定义了一个student指针。但是它没有初始化。它指向某个地方。如果你从某个地方读取数据,那么它是未定义的行为。对于写,它是相同的,而且系统很可能会崩溃。
所以,定义一个学生,如果你想把它给一个子函数,用&-运算符取它的地址(这个地址将指向学生),然后它就可以工作了。
你还需要学习解引用。你的输出语句是错误的。
最后但并非最不重要的是,如果你想存储3个学生,那么你需要一个阵列或其他一些存储在哪里把他们. . .
在读取功能中,您总是覆盖先前读取的学生数据,在显示功能中,您显示未确定的数据。
请看一看您的最小更正代码:

#include <iostream>
using namespace std;

struct student
{
    int studentID;
    char studentName[30];
    char nickname[10];
};

void read_student( student*);
void display_student( student*);

int main()
{
    student s;
    //struct student *ps;
    read_student(&s);

    display_student(&s);

}

void read_student( student* ps)
{
        cout << "Enter the studentID : ";
        cin >> ps->studentID;
        cout << "Enter the full name :";
        cin.ignore();
        cin >> ps->studentName;
        cout << "Enter the nickname : ";
        cin.ignore();
        cin >> ps->nickname;
        cout << endl;
}

void display_student( student* ps)
{
    cout << "student details :" << endl;
    cout << "student name : " << ps->studentName << " (" << ps->studentID << ")" << endl;
    ps++;
}

而且,评论者是对的,你必须读一本书。

相关问题