问题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语言的标准语法来处理(这样更容易理解结构体),假如要用到成员函数,还是老老实实定义类更好。