关于C语言结构体构造函数初始化的问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言结构体构造函数初始化的问题?相关的知识,希望对你有一定的参考价值。
刚刚学会结构体的构造函数,但是在做题中发现不知道如何赋值字符串,请问如何构造可以对字符串进行赋值的构造函数,举个小例子,将代码截下图谢谢(最好不要用strcpy函数,最好使用构造函数的简化形式)
#include<iostream>#include<string>
using std::cout;
using std::string;
class A
string a;
public:
A(string ab="1wggg")a=ab;
string geta()return a;
;
void main()
A b;
cout<<b.geta();
参考技术A 结构体定义变量及初始化
当我们定义了结构体类型之后,可以使用结构体类型来定义变量,定义变量的方式与基本数据类型定义变量一样。假设我们定义了如下的结构体类型:
//定义结构体类型
struct reader
//定义结构体的成员;
char name[32];
int age;
int number;
;
我们可以用该结构体类型来定义变量,如下:
struct reader r1; //定义结构体变量
我们可以在定义结构体变量的时候,对其进行初始化,如下:
//定义结构体变量, 并初始化;
struct reader r1 = "www123", 100, 199;
完整的测试例子如下:
程序运行结果如下:
可以看到,我们在定义变量r1的时候,在后面接着赋值运算符“=”,然后,接着需要赋值的数据。在大括号中存放赋值的数据,每个数据之间是有逗号“,”分隔开。
我们还可以在定义结构体类型的时候就定义变量,同时对其进行初始化,如下:
//定义结构体类型
struct reader
//定义结构体的成员;
char name[32];
int age;
int number;
r1, r2;
此时,在定义struct reader结构体类型的时候,同时定义了变量r1和r2。而且,可以在定义变量的时候初始化,如下:
//定义结构体类型
struct reader
//定义结构体的成员;
char name[32];
int age;
int number;
r1 = "AAABBB", 99, 886, r2 = "www123", 100, 199;
此时,定义struct reader结构体类型的时候,定义了变量r1和r2,而且,给变量r1、r2初始化数据。程序测试代码如下:
程序运行结果如下:
可以看到,我们在定义sruct reader结构体类型的时候,定义了变量r1和r2,并且对它们进行了初始化。
在定义结构体类型的过程中,我们可以省略“结构体类型名”,但是,这样定义的结构体类型就没有名称了,只能够在定义结构体类型的时候定义变量。例如:
//定义结构体类型
struct
//定义结构体的成员;
char name[32];
int age;
int number;
r1, r2 = "www123", 100, 199;
此时,定义了一个结构体类型,但是,该结构体类型没有名称,所以,只能够在定义结构体的时候,定义变量。可以在定义变量的时候进行初始化。
这种结构体定义类型的方式不是很推荐使用,我们只需要知道有这样的定义方式就可以了。
在写代码的时候,我们都更应该给每个变量有一个明确、准确的类型名称。可以通过类型名称和变量名称,就可以知道定义这个类型和变量的一样。这样的代码才是优秀的代码。
结构体数组怎么初始化
结构体数组在定义的同时也可以初始化,例如:
struct stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
class[5] =
"Li ping", 5, 18, 'C', 145.0,
"Zhang ping", 4, 19, 'A', 130.5,
"He fang", 1, 18, 'A', 148.5,
"Cheng ling", 2, 17, 'F', 139.0,
"Wang ming", 3, 17, 'B', 144.5
;
当对数组中全部元素赋值时,也可不给出数组长度,例如:
struct stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
class[] =
"Li ping", 5, 18, 'C', 145.0,
"Zhang ping", 4, 19, 'A', 130.5,
"He fang", 1, 18, 'A', 148.5,
"Cheng ling", 2, 17, 'F', 139.0,
"Wang ming", 3, 17, 'B', 144.5
;
扩展资料:
定义结构体数组和定义结构体变量的方式类似,请看下面的例子:
struct stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
class[5];
表示一个班级有5个学生。
参考资料:C语音中文网-C语言结构体数组
参考技术A // 有两种方法可以初始化结构体数组,如下例所示:#include <iostream>
#include <string>
#include <iomanip>
#include <memory>
using namespace std;
// custom_type
typedef struct tagStudentint Id;string Name;Student;int main()// 设置左对齐
cout.flags(ios::left);
// 方式1: 适用于提前知道具体数据的情况 Student arrStu1[5] = 1, "Name_1", 2, "Name_2", 3, "Name_3", 4, "Name_4", 5, "Name_5"; cout<<"Method_1:"<<endl;
for (int i=0; i<5; i++)cout<<setw(4)<<"Id:"<<arrStu1[i].Id<<", "
<<setw(6)<<"Name:"<<arrStu1[i].Name<<endl;cout<<endl;
// 方式2: 具体数据可能稍后才能得到的情况 Student arrStu2[5]; memset(arrStu2, 0, sizeof(arrStu2)); cout<<"Method_2:"<<endl;本回答被提问者采纳
以上是关于关于C语言结构体构造函数初始化的问题?的主要内容,如果未能解决你的问题,请参考以下文章