type struct 和struct的區別

2021-07-27 22:11:07 字數 2459 閱讀 7729

除了可以直接使用c提供的標準型別名(如int char float等)和自己宣告的結構體等型別外,還可以用typedef宣告新的型別名來代替已有的型別名。

習慣上常把typedef宣告的型別名用大寫字母表示,以便與系統提供的標準型別識別符號相區別

1、typedef int integer;

typedef float real;

如果乙個程式中,乙個整形變數用來計數,可以

typedef int count;

count i,j;

2、可以宣告結構體型別

typedef struct

date;

宣告新型別名date,它代表上面指定的乙個結構體型別。這時,就可以用date定義變數:

date brithday;

date * p;

3、還可以進一步:

1)、typedef int num[100];

num n;

宣告num為整形陣列型別,定義n為整形陣列變數;

2)、typedef char * string;

string p,s[10];

宣告string為字元指標型別

3)、typedef int (* pointer)( )

宣告pointer為指向函式的指標型別,該函式返回整型值;

1】注意#define是在預編譯時處理的,它只能作簡單的字串替換,而typedef 是在編譯時處理的。實際上它並不是作簡單的字串替換。

2】當不同原始檔中用到同一型別資料時,常用typedef宣告一些資料型別,把它們單獨放在乙個檔案中,然後在需要用到它們的檔案中用#include命令把它們包含進來。

3】使用typedef有利於程式的通用和移植。有時程式會依賴硬體特性,用typedef便於移植。例如,有的計算機系統int型資料用兩個位元組、資料範圍為-32768~32767,而另外一些機器則以4個位元組存放乙個整數,數值範圍為+-21億。如果把乙個c程式從乙個以4個位元組存放整數的計算機系統移植到以2個位元組存放整數的系統,按一般方法需要將定義變數中的每個int改為long。例如,將「int a,b,c;」改為「long a,b,c;」,如果程式中有多處用int 定義變數,則要改動多處。現在用乙個integer 來宣告int:

typedef int integer;

在程式中所有整型變數都用integer定義。在移植時只需改動typedef定義體即可:

typedef long integer;

普通結構體宣告時使用只struct關鍵字,而鍊錶需要typedef struct,比較疑惑他們之間的區別

(1) 在c中定義乙個結構體型別要用typedef:

typedef

struct student

stu;

則宣告變數是這種形式:stu stu1;

如果沒有typedef就必須用struct student stu1;來宣告。stu實際上就是struct student的別名。

另外這裡也可以不寫student

typedef

struct

stu;

則宣告形式必須是stu stu1;

2)在c++中定義乙個結構體型別:

struct student  

;

於是就定義了結構體型別student,宣告變數時直接student stu2

typedef

struct student2

stu1;//stu1是乙個結構體型別

struct student  

stu2;//stu2是乙個變數

注意帶typedef關鍵字,其就為型別,不帶就為變數

還應該注意的是,c++為了c程式設計師的習慣,保留了struct關鍵字,但是其意義與class相同,唯一的區別是struct預設成員許可權為public。

3) 鍊錶的宣告

//方式1

typedef

struct listnode

node,*linklist;

//方式2

struct listnode

; typedef

struct listnode node;

typedef node *linklist;

//方式3

typedef

struct listnode node;

typedef node *linklist;

因為都有typedef關鍵字,所以後面宣告的都是型別。其中node與linklist本質是一樣的,只不過乙個是node型別結構體,乙個是指向node的指標。但是理解時linklist應該是高層次的意義,即乙個鍊錶。

在IntelliJ IDEA中使用struts2

因為老師都是在eclipse上寫,為了在idea上使用struts2折騰了好久,網上大都是在專案建立的時候使用,所有都幫你配置好了,而我是因為跟著課程所有要在現有專案上修改新增,手動配置,就遇到挺多坑。方法一 在建立專案時勾選 自動生成相關配置檔案 增加修改相關配置檔案web.xml struts2...

研究了一下tomcat提交亂碼和struts

1.get方法,在tomcat的配置裡加上 uriencoding utf 8 具體檔案是 tomcat conf server.xml 結點 server service connector 2.post方法,使用enctype multipart form data 這樣就不會有亂碼,如果後端是...

python學習筆記7 5 內建模組struct

python中變數的型別只有列表 元祖 字典 集合等高階抽象型別,並沒有像c中定義了位 位元組 整型等底層初級型別。因為python本來就是高階解釋性語言,執行的時候都是經過翻譯後再在底層執行。如何打通python和其他語言之間的型別定義障礙,python的內建模組struct完全解決了所有問題。在...