关于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语言结构体构造函数初始化的问题?的主要内容,如果未能解决你的问题,请参考以下文章

C 语言关于结构体做参数传递?

关于C语言中函数修改结构体的值的问题

关于C语言结构体指针做函数形参的问题

c语言中关于结构体 调用函数的问题 新手求教

C语言结构体指针定义问题 - C / C++ -

C语言中关于结构体指针为啥不能在函数内赋初值的问题?