1. 程式人生 > >結構體struct和typedef後面接指標的含義

結構體struct和typedef後面接指標的含義

在C語言裡面,struct是用來定義新的資料型別——結構體,typedef是給資料型別取別名。
據說這兩個關鍵詞同時使用有助於減少程式碼量和增加程式碼的可讀性(不過我認為它當typedef和struct在一起的時候反而降低了程式碼的可讀性),很多時候為了方便,我們常常講stuct與typedef放在一起用。

像這樣的程式碼是比較好理解的,就是取FileInfo為sturct file的別名嘛。

typedef struct file{
...
}FileInfo;

但是在嚴奶奶的《資料結構》那本書裡面卻充滿了這樣的用法:

typedef struct file{
...
}FileInfo,
 *FileP;

這種用法讓我感到很迷惑,經過了本人多方考證和驗證,它是這麼個意思:

給struct file 取個別名為FileInfo 
給struct file * 取個別名為FileP

說也怪啊。你說用typedef struct … FileInfo增加程式碼的可讀性,我勉強可以接受。
但是你說用typedef struct … *FileP可以增加程式碼的可讀性,我真的是撞邪了。當我面對下面一行程式碼的時候

FileP P

要不是其中的“P”,我還真的想不到變數“P”是一個指標。

相關推薦

結構structtypedef後面指標含義

在C語言裡面,struct是用來定義新的資料型別——結構體,typedef是給資料型別取別名。 據說這兩個關鍵詞同時使用有助於減少程式碼量和增加程式碼的可讀性(不過我認為它當typedef和struct在一起的時候反而降低了程式碼的可讀性),很多時候為了方便,我們常常講s

C語言基礎知識(一)結構struct typedef struct區別

C與C++中struct 和typedef struct區別從三個方面對比 1、宣告變數方便: 在C語言中,常常見到typedef修飾結構體,如: #include<stdio.h> typedef struct _TEST { int value; char mat

go 結構 (struct) 方法 (method)

結構體(struct) go中沒有物件這一概念,所以採用了結構體的概念,結構體在go中有著非常重要的位置。結構體是值型別,所以可以使用new函式來建立。結構體中欄位必須唯一。 結構體定義如下: type identifier struct { filed type filed type

結構 struct 類Class 區別

  c#中結構體和類結構相似,夠可以包括資料成員和方法成員。   二者區別:   1,結構是指型別,在棧中分配空間;類引用型別,在堆中分配空間,棧中儲存引用。    2,結構直接儲存成員資料,其成員資料位於堆中;類堆中儲存物件,棧中的引用指向物件。   C#中的簡單型別,如

關於unity結構struct類class的使用細節注意事項!

        今天在專案中用到了結構體來儲存一些不同型別的資料,結構體目的是在任意地方呼叫和修改其中的資料資訊(相信這裡對結構體比較瞭解的人已經發現問題所在了)。當我決定用結構體的那一刻,我就已經走

結構 struct 類 class 的比較

C的結構體和C++結構體的區別 1、組成不同 C的結構體內不允許有函式存在,C++允許有內部成員函式,且允許該函式是虛擬函式。所以C的結構體是沒有建構函式、解構函式、和this指標的。 2、許可權不同 C的結構體對內部成員變數的訪問許可權只能是publi

結構(struct)聯合體(union)的區別

兩者最大的區別在於記憶體利用 一、結構體struct     各成員各自擁有自己的記憶體,各自使用互不干涉,同時存在的,遵循記憶體對齊原則。一個struct變數的總長度等於所有成員的長度之和。 二、聯合體union     各成員共用一塊記憶體空間,並且同時只有一個成

結構struct前面加 typedef不加typedef的區別

直接把結構名定義為am_win_menutext然後使用,這樣在使用時必須這樣:   struct am_win_menutext myval   定義了別名之後就可以:   am_win_menutext myval   這樣可以更清晰。   主要在c語言裡這樣使用 使

C語言結構typedef關鍵字定義結構別名函式指標的應用

結構體(struct)的初始化 struct autonlist { char *symbol; struct nlist nl[2]

結構struct typedef struct應該以及結構的建構函式 區別

主要記錄 struct 和 typedef struct的筆記 # include <iostream> using namespace std; struct Student {

C語言 一個例子說明結構變數,結構陣列結構指標

輸入三個學生的個人資訊 包含學號 姓名和三門學科的成績 輸出平均成績最高的學生的學號 姓名 各科成績以及平均成績 程式碼如下(譚浩強c程式設計的例子) #include<stdio.h> struct Student {int num;

結構成員結構指標初始化

#include<stdio.h>#include <stdlib.h>#include <string>struct student{   char *name;   int score;   struct student* next;

linux C 結構struct的定義初始化

struct 定義: struct test { int a; long b; float c; char d; char e[]; }tt1,tt2;//物件宣告列表緊跟struct定義 struct test tt3,tt4;//單獨宣告物件列表 //宣告一個沒結構體名

結構變數結構指標變數作為函式引數傳遞的問題

/*2015年8月28日13:20:28通過函式完成對結構體變數的輸入和輸出*/# include <stdio.h># include <string.h>struct Student{int age;char sex;char name[100];

libevent原始碼分析(2)--2.1.8--結構 struct eventstruct event_callback

一、event_callback結構體 struct event_callback { //下一個回撥事件 TAILQ_ENTRY(event_callback) evcb_active_next; //回撥事件的狀態標識,具體為:

域名網路地址結構---struct hostent

該結構體定義如下: struct hostent { char *h_name; //主機名,即官方域名 char **h_aliases; //主機所有別名構成的字串陣列,同一IP可繫結多個域名 int h_addrtype;

細節決定成敗(用結構變數結構指標變數的指標做函式引數)

//有n個結構體變數, //內含學生學號, //姓名和3門 //課程成績 //要求輸出平均成績最高 //的學生的資訊 //包括學號,姓名, //3門課程成績和平均成績 #include <stdio.h> #define n 3 struct student{

Go語言結構(struct)

手機 div -s 東京 log fmt lis int 不同類 Go 語言結構體 Go 語言中數組可以存儲同一類型的數據,但在結構體中我們可以為不同項定義不同的數據類型。 結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。 結構體表示一項記錄,比如保存圖書館的書

structtypedef struct

enter 暫時 裏的 變量 data- 聲明 otto 標識 定義 1 首先://註意在C和C++裏不同     在C中定義一個結構體類型要用typedef:     typedef struct Student     {     i

結構struct sockaddr_in, struct sockaddr,struct in_addr

char 需要 整形 inet_ntoa 首地址 xxx dst int family 一、結構體 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct socka