如何識別複雜的資料型別

2021-07-14 17:28:34 字數 885 閱讀 8202

近些年來,資料的型別往往成為各大公司出面試題的熱門,如:int(*a[10])(int)等,看得人頭昏眼花,不過不要緊,今天教你如何識別:左右法則

int * a , int * * a , int a[10] , int * a[10] , int (* a)(int)

int (* a[10]) (int) , int * ( *( *a)(int))[10]

這些資料是什麼型別呢?

下面我們運用左右法則看一下int * ( * (*a)(int))[10]

首先我們找到字母(或者是變數等)a,看的規則以這變數為中心,先向左看,再向右看,再向左看,再向右看…….,對了,還要說一點,對於每一種型別的資料我們的反應應該是:如果看到陣列,就想:這陣列裡面的元素儲存的什麼,看到指標,應該想,這指標儲存的哪種資料的位址(即該指標指向哪種資料型別),看到函式我們應該想,這個函式的形參是什麼,返回值是什麼。

有了上面的想法,我們開始看吧,首先看a的右邊是個括號,再看左邊是指標,則a是指標變數,再看右邊是個括號,意識到是個函式,這是乙個函式指標變數,這時我們應該思考函式的形參是整形,它的返回值是指標,再看右邊,該指標指向的是陣列,所以是陣列指標,再看左邊,該陣列裡的元素是是乙個整形指標。

下面我,我們再看一題:int * (* (* arr[5] ) ( ) ) [10];

首先我們找到陣列arr[5],然後看左邊是,說明他是指標陣列,然後看右邊是括號,說明是函式指標陣列,那麼函式的形參和返回值呢?函式的形參是空,返回值是 ,這時考慮這個指標它存放的是誰的位址,再看右邊是 [10],說明是陣列指標,那麼這個陣列的裡的元素是什麼呢,再看左邊,是 *(指標),該指標指向的是整形,說明是整形指標。

好了,自己練習一道題吧:float ( * ( * b()) ) () ;

複雜的資料型別 string資料型別

include include 為了使用getline函式和在我們的程式中使用string型別,使用string型別時我們需要包含string字元標頭檔案 using namespace std define item 10 使用巨集定義變數 void calcsum void string int...

複雜的資料型別

1.行記錄型別 rowtype 代表一行的記錄結構 前是表的名稱 便於儲存表中的一行 對於這種變數的呼叫,就像我們正常去獲取表中一行裡的值一樣 declare v1 dept rowtype begin select into v1 from dept where deptno 10 dbms ou...

c 複雜的資料型別

陣列 乙個陣列把許多同型別的值儲存在同乙個變數名下。include define item 10 int main sum a i std cout 總和是 include includeint main int ptr array cout ptr 1 include using namespac...