簡單直接排序
#include
intmain()
;int n=
sizeof
(a)/
sizeof
(a[0])
;int i,j,temp;
printf
("原陣列為:");
for(i=
0;i++i)
printf
("%d "
,a[i]);
printf
("\n\n");
for(i =
1; i < n; i++
) a[j]
=temp;
}printf
("排序後陣列:");
for(i=
0;i)printf
("%d "
,a[i]);
printf
("\n");
return0;
}
將乙個3x3的陣列轉置
void
printf_a
(int a[
3],int col,
int raw)
;void
zhuanzhi
(int
(*a)[3
]);int
main()
;printf_a
(a,3,3
);//transpose(a,3,3);
zhuanzhi
(a);
printf_a
(a,3,3
);return0;
}void
printf_a
(int a[
3],int col,
int raw)
printf
("\n");
}printf
("******************\n");
}void
zhuanzhi
(int
(*a)[3
])
2.有一陣列,int a[4] = ; *((int *)(&a + 1) - 1)的結果是:
答:4這個問題的關鍵是理解 &a
a是乙個陣列名,也就是陣列的首位址。
對a進行取位址運算子,得到的是乙個指向陣列的指標!!!!這句話尤為重要!
也就相當於
int (*p) [4] = &a;
p是乙個指標,它指向的是乙個包含4個int元素的陣列!!
(&a + 1) 相當於p的偏移量相當於 p + sizeof(int) * 4
而程式中強制將指標(int *(&a + 1))轉換成乙個(int) 那麼 p -1 其實就是 p - sizeof(int)。所以,再-1 指向了陣列中得最後乙個元素,也就是 4。
4.寫乙個巨集函式,功能:求結構體(struct type)成員(mem)相對於其首位址的偏移位址
#define struct_offset(type, mem) (( size_t ) &(( struct type*) 0 )->mem)
因為是求偏移量 所以假設結構體的首位址是0開始,把他轉換成結構體指標型別,在用->取得他的成員,前面加了乙個& 就是取得這個成員的位址,最後在強制轉換成size_t,這樣就得到了偏移量。
C語言面試題
基礎篇 1 區域性變數能否和全域性變數重名?可以2 如何引用乙個已經定義過的全域性變數?直接呼叫並初始化 3 全域性變數可不可以定義在可被多個.c檔案包含的標頭檔案中?為什麼?可以,6 堆和棧有什麼區別?7 什麼是預編譯,何時需要預編譯 8 c和c 中的struct有什麼不同?9 memset me...
C語言面試題
1.求某一年的某一天 includestruct sdate int main int i 0,nday dt.nday while i2 nday printf 這是 d年的第 d天 n dt.nyear,dt.nday return 0 將列印和演算法抽象成不同函式 includestruct ...
C語言面試題
1.要求使用一維陣列,輸入10名同學的序號和成績,並進行排序。題目1196 成績排序 題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到...