问题1:
#include <iostream> #include <math.h> #include <cstring> /* 字符处理库 */ #include <iomanip> /* setw(行宽) */ #include <cstdio> using namespace std; struct TEST{ int i; int arr[10]; }; struct TEST A,B;//第一种 TEST A,B;//第二种 int main(){ cout<<A.i; }
上面在定义结构体变量的时候加与不加struct关键字有什么区别吗?
问题2:
结构体命名一般是什么样子的?见有人全部大写也有人全部小写。
问题3:
typedef这个关键字是做什么的?
问题4:
#include <iostream> #include <math.h> #include <cstring> /* 字符处理库 */ #include <iomanip> /* setw(行宽) */ #include <cstdio> using namespace std; struct TEST{ int i; int arr[10]; }; int main(){ TEST A; A={1,{1,1}}; cout<<A.arr[1]; }
当没有在结构体中给变量赋值的时候可以这样A={1,{1,1}};写。
#include <iostream> #include <math.h> #include <cstring> /* 字符处理库 */ #include <iomanip> /* setw(行宽) */ #include <cstdio> using namespace std; struct TEST{ int i = 0; int arr[10]; }; int main(){ TEST A; A={1,{1,1}}; cout<<A.arr[1]; }
在给结构体中的变量一个默认值时再A={1,{1,1}};就会报错。
问题5:
怎么样给结构体中的变量初始值
本人现在是在结构体中写一个初始化函数,在外面使用结构体变量前先执行下初始化函数,但感觉这样不是特别优美。
#include <iostream> #include <math.h> #include <cstring> /* 字符处理库 */ #include <iomanip> /* setw(行宽) */ #include <cstdio> using namespace std; struct TEST{ int i; int arr[10]; void init(){ i = 0; memset(arr, 0, sizeof(arr)); } }; int main(){ TEST A; A.init(); cout<<A.arr[0]; }
望高手们指点!
解决方案
80
1.在C++中可以,但在c中不行。
3.你可以理解成取个别名,例如typedef int *p_int;
就是给int *取个别名叫p_int
int *a;等价于p_int a;
3.你可以理解成取个别名,例如typedef int *p_int;
就是给int *取个别名叫p_int
int *a;等价于p_int a;
10
你把C语言中的结构体与C++中的类的使用方法混淆了,结构体本来是C语言中的概念,C语言中并没有什么成员函数之类的东西,但是到了C++的语法中,结构体其实是被默认成全部成员都是public的类的,建议你学习结构体的时候按照C语言的标准语法来处理(这样更容易理解结构体),假如要用到成员函数,还是老老实实定义类更好。