1. 程式人生 > >2018年6月22日

2018年6月22日

學生姓名:唐鑫日期:2018/06/22              今天學習任務:C語言複習及提高
今日任務完成情況:已經按照老師所講的完成應該完成的程式設計,程式碼量約250+行。
今日開發中出現的問題彙總:指標
今日未解決問題:無
今日開發收穫:回顧了c語言的陣列、指標、函式,並對於這些演算法和基礎函式有了再一次的訓練。陣列和指標在某些方面比較相似,尤其是陣列地址以及資料在裝置中儲存地址的問題以前都沒仔細注意過。
自我評價:學習積極性較高,學習到了一些基本的程式碼書寫要求。及時高效完成老師佈置的作業,自我百度不清楚的知識點。
其他:
1.一維陣列,二維陣列如何定義,初始化?如何在程式中賦值?
   一維陣列的定義格式為:
     型別說明符  陣列名[常量表達式];  例如:  int a[10];  它表示定義了一個整形陣列,陣列名為a,有10個元素。
  賦值:
    1.在定義陣列時對陣列元素賦以初值。例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
   2. 可以只給一部分元素賦值。例如:int a[10]={0,1,2,3,4};    定義a陣列有10個元素,但花括弧內只提供5個初                     值,    這表示只給前面5個元素賦初值,後5個元素值為0。
3. 如果想使一個數組中全部元素值為0,可以寫成:int  a[10]={0,0,0,0,0,0,0,0,0,0};   或int a[10]={0};不能寫成:int a             [10]={0*10};
4、在對全部陣列元素賦初值時,由於資料的個數已經確定,因此可以不指定陣列長度。例如:int a[5]={1,2,3,4,                   5};也可以寫成  int a[]={1,2,3,4,5};  int a[10]={1,2,3,4,5};  只初始化前5個元素,後5個元素為0。
二維陣列定義的一般形式為:
型別說明符  陣列名[常量表達式][常量表達式];

例如:定義a為3×4(3行4列)的陣列,b為5×10(5行10列)的陣列。如下:float  a[3][4],b[5][10] ;

初始化:1分行給二維陣列賦初值  2可以將所有資料寫在一個花括號內,按陣列排列的順序對各元素賦初值。3.可以對部分元素                 賦初值。4.如果對全部元素都賦初值,則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。

2.字元陣列如何定義,初始化,如何程式中賦值?

字元陣列的輸入輸出可以有兩種方法:
逐個字元輸入輸出。用格式符“%c”輸入或輸出一個字元。
將整個字串一次輸入或輸出。用“%s”格式符,意思是對字串的輸入輸出。 

3.字串常見函式的使用,不用函式如何實現字串的複製,字串長度的實現?

(1)用“%s”格式符輸出字串時,printf函式中的輸出項是字元陣列名,而不是陣列元素名。

(2)如果陣列長度大於字串實際長度,也只輸出到遇′\0′結束。(3)可以用scanf函式輸入一個字串。

4.函式的構造有哪些?入參,返回值如何在函式中體現?形參,實參是如何傳遞資料?

函式呼叫的形式:
(1)作為函式語句呼叫。函式一般無返回值。例:
printf(“Hello,World!\n”);
(2)作為函式表示式呼叫。例:
m=max(a,b)*2;
(3)作為函式引數呼叫。例:
printf(“%d”,max(a,b));
   m=max(a,max(b,c));

形式引數:定義函式時函式名後面括號中的變數名
實際引數:呼叫函式時函式名後面括號中的表示式

5.值傳遞,地址傳遞是怎麼回事?如何實現在子函式中數值交換後在主函式中能實現?

值傳遞方式方式:
  函式呼叫時,為形參分配單元,並將實參的值複製到形參中;
  呼叫結束,形參單元被釋放,實參單元仍保留並維持原值;
特點:

形參與實參佔用不同的記憶體單元;  單向傳遞

地址傳遞方式:
函式呼叫時,將資料的儲存地址作為引數傳遞給形參
特點:
形參與實參佔用同樣的儲存單元;
“雙向”傳遞;
實參和形參必須是地址常量或變數;

6. Auto,register,extern,static關鍵字的使用,詳細說明

動變數是最常用的。 關鍵字auto能夠顯式地指定儲存類別。
  顯式定義         auto int x,y;隱含定義    等價       int x,y;

實際上關鍵字“auto”可以省略,auto不寫則隱含確定為“自動儲存類別”,即動態儲存方式。 程式中大多數變數屬於自動變數。

對於使用頻繁的變數,可以使用register宣告為暫存器變數,其值儲存在CPU中,加快了執行速度。如:register int x;     register char  c.

如果全域性變數在後面定義,而在前面的函式中要使用,則必須在使用前用extern宣告該全域性變數。如:extern int Abc; 

static修飾全域性變數,改變變數的作用域,只在本檔案被使用
static修飾函式,改變函式的作用域,只在本檔案被呼叫
static修飾區域性變數,改變變數的宣告週期,直到程式退出

7.檔案的包含有幾種?分別表示什麼意思?

兩種。潛逃包含和集中包含。

8.巨集定義如何實現?撤銷定義如何實現?

一般形式:   #define   巨集名    [巨集體]

#undef可終止巨集名作用域