『壹』 C語言的三大區域是什麼
1、循環,函數,指針。
2、C語言其他重要規則:
(1)C源程序是由一個主函數和若干個其它函數組成的。
(2)函數名後必須有小括弧,函數體放在大括弧內。
(3)C程序必須用小寫字母書寫。
(4)每句的末尾加分號。
(5)可以一行多句。
(6)可以一句多行。
(7)可以在程序的任何位置加註釋。
一個完整的C語言程序,是由一個main()函數(又稱主函數)和若干個其它函數結合而成的,或僅由一個main()函數構成。
『貳』 C語言中總是從main函數開始執行,那執行好main函數後,是按照從上到下的順序執行嗎
C語言中總是從main函數開始執行,執行好main函數後,是按照從上到下的順序執行的。
遇到一些結構遵循結構的語法進行,但是整體順序就是由上到下。
『叄』 C語言程序設計(12)
第一處填空,是個三重循環:
for(i=0;i<N;i++)
for(j=0;j<N+1;j++)
for(k=j+1;k<N;k++)
這里,i是數組的行標號,第一重循環表示依次對N行數組分別排序
然後j和k是列下標,一個二重循環排序的過程,其原理如下:
比如2 3 5 1 0 按從小到大排序
首先,j=0 k=1~4,就是數字2分別與3 5 1 0比較,把小的放到2的位置來
一輪之後,就變成 0 3 5 2 1
第二輪,j=1 k=2~4 ,就是數字3分別與5 2 1比較,把最小的放到3的位置
就是依次找出最小的放在最前,找出第二小的,放第二個位置……
依次這樣循環到最後,就能完成排序
第二個填空,是要完成「第0行從小到大排序,第1行從大到小排序,第2行從小到大排序,第3行從大到小排序」這樣的功能,這樣填:
if(i%2==1?a[i][j]<a[i][k]:a[i][j]>a[i][k])
表示,如果i%2==1(即i是奇數行標),則採用a[i][j]<a[i][k]這個判斷條件,否則就採用a[i][j]>a[i][k]這個判斷條件
這樣就能實現偶行從小到大排序,奇行從大到小排序咯
=============================================
1
outarr(aa);
這樣是把數組的地址當作實參傳遞過去,而,形參是這樣
void outarr(int a[N][N])
這說明白形參是接受的數組的值啊???
這是怎麼回事?
這里不是按地址傳遞,定義void outarr(int a[N][N])表示的是按數組整個傳遞,並且數組做為參數傳遞有個特點,就是一定是按引用傳遞
知道什麼是按引用傳遞嗎?簡單理解,就是在函數裡面,對該參數的修改,會影響主函數中該參數的值
====================================================
2
在主函數中
數組的定義是這樣的
int aa[N][N]
表示未知行和列
但初始化又是這樣
int aa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};
這樣能算對嗎?
這里數組的定義不是未知行和列
我們語庋規則規定,數組定義,必須用明確定義行列的數目
其實這里的N不是一個變數,而已經變成一個數字了,看上面的定義:
#define N 4
這一句定義,等於告訴編譯器,每逢碰到N,就把它換成4的意思
那麼其實數組定義就是int aa[4][4]
=====================================================
3
第一個被調函數
void sort(int a[][N])
它裡面省略的行,我知道,二維數組可以這么寫,但,在這個被調函數中,要使用到行數啊,它不給出,後面,怎麼計算呢?
這個程序中,行數N在前面已經定義了
在整個程序的過程中,N不是一個變數,而是表示數字4!!
『肆』 C語言運行的內存要求是哪三個是不是程序代碼區,靜態存儲區和動態存儲區。求高人路過
一個由c/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧。2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。3、全局區(靜態區)(static)—,全局變數和靜態變數的存儲是放在一塊的,初始化的全局變數和靜態變數在一塊區域, 未初始化的全局變數和未初始化的靜態變數在相鄰的另一塊區域。 - 程序結束後有系統釋放 4、文字常量區—常量字元串就是放在這里的。 程序結束後由系統釋放5、程序代碼區—存放函數體的二進制代碼。