1. 程式人生 >實用技巧 >其它 >c++結構體指標

c++結構體指標


先上程式碼

#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

說明

  1. malloc()只會申請記憶體並且返回申請到的記憶體空間的首地址,不負責初始化。
  2. 記憶體只負責存資料,資料最終的值由變數型別決定,比如同一個地址stu;*stu.id和*var的值是相等的。