先上代码
#include<iostream>
using namespace std;
struct Student1 {
int id = 200;
int s = 100;
char* name = "lisi";
};
void test2() {
Student1 *stu = (Student1 *)malloc(sizeof(Student1));
int *var = (int *)stu;
cout << "stu->id == " << stu->id << ", stu->name == " << stu->name << endl;
cout << "*var == " << *var << endl;
}
void test3() {
Student1 *stu = (Student1 *)malloc(sizeof(Student1));
stu->id = 100;
stu->name = "zhangsan";
int *var = (int *)stu;
cout << "stu->id == " << stu->id << ", stu->name == " << stu->name << endl;
cout << "*var == " << *var << endl;
}
int main() {
cout << "-----test2-----" << endl;
test2();
cout << "\n-----test3-----" << endl;
test3();
}
结果
-----test2-----
stu->id == 1579168, stu->name == @
*var == 1579168
-----test3-----
stu->id == 100, stu->name == zhangsan
*var == 100
说明
malloc()
只会申请内存并且返回申请到的内存空间的首地址,不负责初始化。- 内存只负责存数据,数据最终的值由变量类型决定,比如同一个地址
stu
;*stu.id
和*var
的值是相等的。