c++从函数类型创建变量

C++ creating a variable from a function type

本文关键字:创建 变量 类型 函数 c++      更新时间:2023-10-16

我正试图将我的student_info结构与我的read_name功能联系起来,但我有问题,让它正常工作,它不会编译。我现在得到的错误是error: ‘first_name’ was not declared in this scopeerror: ‘last_name’ was not declared in this scope。但是,我在结构中声明了它们。

下面是我的代码:

#include <iostream>
using namespace std;
//Place your structure here for Step #1:
struct student_info 
{
  char first_name[15];
  char last_name[15];
  char crn[15];
  char course_designator[15];
  int section;
};

//Place any prototypes that use the structure here:
void read_name(student_info & first_name[], student_info & last_name[])
{
  cout << "enter first name" << endl;
  cin.getline(first_name, 15, 'n'); 
  cout << "enter last name" << endl;
  cin.getline(last_name, 15, 'n');
  first[0] = toupper(first_name[0]);
  last[0] = toupper(last_name[0]); 
  cout << "your name is " << first_name << " " <<  last_name << endl;
}
int main()    
{
  //For Step #2, create a variable of the struct here:
  student_info student;
  read_name(first_name, last_name);
  return 0;
}

你可以做些什么来解决你的问题

  1. read_name更改为对student_info的引用

    void read_name(student_info & student)
    
  2. 修改read_name的实现,将数据读取到infofirst_namelast_name成员。

    void read_name(student_info & student)
    {
        cout << "enter first name" << endl;
        cin.getline(student.first_name, 15, 'n'); 
        cout << "enter last name" << endl;
        cin.getline(student.last_name, 15, 'n');
        first[0] = toupper(student.first_name[0]);
        last[0] = toupper(student.last_name[0]); 
        cout << "your name is " << student.first_name << " "
             <<  student.last_name << endl;
    }
    
  3. main调用read_name,使用student作为参数。

    int main()    
    {
        //For Step #2, create a variable of the struct here:
        student_info student;
        read_name(student);
        return 0;
    }