天天看點

未定義結構體變量導緻的代碼書寫錯誤

一、遇到的問題

在書寫結構體代碼時,由于沒有真正了解結構體的知識導緻書寫代碼老

是出現錯誤。最大的錯誤就是沒有定義結構變量。

出現這種錯誤主要是因為對“結構體”知識點及定義沒有掌握導緻的。

錯誤代碼如下;

未定義結構體變量導緻的代碼書寫錯誤

二、書寫結構體有兩個步驟;

1、建立結構聲明(建立模闆)

#include <stdio.h>
struct book {
	char name[30];
	char author[10];
	int price;
};

           

該聲明描述了一個由兩個字元組和一個int類型變量組成的結構,其實該聲明并未建立實際的

資料對象,隻描述了該對象有什麼組成。結構體關鍵字“struct”後面跟的是一個結構,本代碼

下是一個叫做book的結構。(book是可選标記,之後可以使用該标記引用book這個結構)

2、定義結構變量

結構有兩層含義。一層是“結構布局”,另一層是“結構變量”。結構布局隻是告訴編譯器如何

表示資料,但是并未讓編譯器為資料配置設定空間。是以需要建立一個結構變量

struct book b1 {"以幽默的方式過一生","琢磨先生",10 };           

編譯器執行完該代碼便建立了一個結構變量b1;之後編譯器通過book結構布局為結構變量“b1”配置設定

空間,之後就将b1這個結構變量與兩個char數組、一個int類型結合在一起

*通路資料的兩種方式

1、用   ”.“操作符時:“結構變量 . 成員”,如”book.name“

2、用   ”->“操作符時: ”結構變量->成員“如”book->name“

(  注意:如果用指針變量儲存結構變量的位址後,想通過”.“操作符找到對應的成員需要對指針變量解

              引用(*),如果通過”->“操作符時則不需要解引用。)

三、對之前的錯誤代碼進行修改

#include <stdio.h>
struct book {
	char name[30];
	char author[10];
	int price;
};
int main() {
	struct book b1 {"以幽默的方式過一生","琢磨先生",10 };
	printf("書名=%s\n",b1.name);
	printf("作者=%s\n", b1.author);
	printf("價格=%d\n", b1.price);
	return 0;
}

           

運作結果為:

未定義結構體變量導緻的代碼書寫錯誤

繼續閱讀