為什麼這篇指標 陣列 題目鄉民發文收入到精華區:因為在指標 陣列 題目這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者planda ()看板C_and_CPP標題Re: [分享] 嵌入式系統公司指標宣告考題時間Th...
用程式幫助理解
當然,實做不會這樣寫
比方說範例(6),用一行判斷式就解決了
題目中10都改4
從每小提的箭頭處往上看 and 依序往下看
※ 引述《fengchu (Galileo Galilei)》之銘言:
: 美國某著名嵌入式系統公司2005年9月面試題,供板友們練習
: Write in words the data type of the identifier involved in the following
: definitions.
: (1) float (**def)[10];
float f1[4] = { 0.1f, 0.2f, 0.3f, 0.4f };
float (*pf1)[4] = &f1;
=> float (**ppf1)[4] = &pf1;
: (2) double *(*gh)[10];
double db2 = 0.2f;
double *pdb2[4] = { &db2, &db2, &db2, &db2 };
=> double *(*ppdb2)[4] = &pdb2;
: (3) double (*f[10])();
double fn3a()
{
return 0.31f;
}
double fn3b()
{
return 0.32f;
}
void main()
{
=> double (*pfn3[4])() = { &fn3a, &fn3b, &fn3a, &fn3b };
double dbReta = pfn3[0]();
double dbRetb = pfn3[1]();
// dbReta 等於 0.31f, dbRetb 等於 0.32f.
}
: (4) int *((*b)[10]);
int n4 = 4;
int *pn4[4] = { &n4, &n4, &n4, &n4 };
=> int *((*ppn4)[4]) = &pn4;
衍伸 int *(*ppn4[4]) = { &pn4[0], &pn4[1], &pn4[2], &pn4[3] };
或
int **ppn4[4] = { &pn4[0], &pn4[1], &pn4[2], &pn4[3] };
: (5) long (*fun)(int);
long fn5(int a)
{
return (long)(a+1);
}
void main()
{
long (*pfn5)(int) = &fn5;
long lRet = pfn5(1);
// lRet 等於 2
}
: (6) int (*(*F)(int, int))(int);
int fn6a(int a)
{
return a;
}
int fn6b(int b)
{
return (b + 1);
}
typedef int (*def6)(int);
def6 fn6(int a, int b)
{
if ( a >= b ) {
return &fn6a;
}
return &fn6b;
}
void main()
{
int (*(*ppfn6)(int, int))(int) = &fn6;
def6 pfn6 = ppfn6(0, 1);
int nRet = pfn6(2);
// nRet 等於 3
}
: (1) def是一個指向指標的指標,*def是指向一個有10個元素的一維陣列的指標,陣列的
: 元素型別為float
: (2) gh是一個指標,指向一個有10個元素的一維陣列,陣列元素型別為double*
: (3) f是一個有10個元素的陣列,陣列的元素型別為函式指標,指向的函式為沒有參數且
: 返回值型別為double的函式
: (4) b是一維陣列的指標,陣列元素型別為int*
: (5) fun是一個函數指標。指向的函數輸入參數型別為int,回傳值型別為long
: (6) F是一個函數指標,指向的函式輸入參數為(int, int),並返回一個函式指標。返回
: 的函式指標指向一個輸入參數為(int)回傳值型別為int的函式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.121.34
※ 編輯: planda 來自: 118.163.121.34 (12/26 22:02)