當前位置:首頁 » 編程語言 » c語言架構師的基礎知識
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言架構師的基礎知識

發布時間: 2022-11-21 23:44:34

A. 學習c語言需要掌握哪些基本知識

1.入門程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.數據類型

數據類型:

1.基本數據類型:

1.1. 整型:int 4個位元組

1.2. 字元型:char 1個位元組

1.3. 實型(浮點型)

  • 1.3.1.單精度型:float 4個位元組

  • 1.3.2.雙精度型:double 8個位元組

  • 2.構造類型:

    2.1.枚舉類型

    2.2.數組類型

    2.3.結構體類型

    2.4.共用體類型

    3.指針類型:

    4.空類型:

    3.格式化輸出語句

  • %d:十進制整數;

  • %c:單個字元;

  • %s:字元串;

  • %f:6位小數;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

  • printf("小明今年%d歲 ", age);

  • printf("小明身高%f%c ", height, unit);

  • printf("小明現在在慕課網上學習IT技術 ");

  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    4.常量

    值不發生改變的量成為常量;

    定義字元常量(注意後面沒有;)

  • #include <stdio.h>

  • #define POCKETMONEY 10 //定義常量及常量值

  • int main()

  • {

  • printf("小明今天又得到%d元零花錢 ", POCKETMONEY);

  • return 0;

  • }

  • 5.運算符

    5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;

    5.2.賦值運算符:

    5.3.關系運算符;

    5.4.邏輯運算符;

    5.5.三目運算符:

  • 表達式1 ? 表達式2 : 表達式3;

  • 6.水仙花數計算

    輸出所有三位數的水仙花數字

    所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數,如:153就是一個水仙花數,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定義三位數num,個位數sd,十位數td,百位數hd

  • int num, sd, td, hd;

  • //循環所有三位數

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //獲取三位數字num百位上的數字

  • hd = num/100 ;

  • //獲取三位數字num十位上的數字

  • td = num/10%10 ;

  • //獲取三位數字num個位上的數字

  • sd = num%10 ;

  • //水仙花數的條件是什麼?

  • if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

  • {

  • printf("水仙花數字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.列印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 觀察每行的空格數量,補全循環條件 */

  • for( j=i ; j<5 ; j++ )

  • {

  • printf(" "); //輸出空格

  • }

  • /* 觀察每行*號的數量,補全循環條件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

  • printf("*"); //每行輸出的*號

  • }

  • printf(" "); //每次循環換行

  • }

  • return 0;

  • }

  • 8.臭名遠揚的goto語句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

  • for(i=1; i<=10; i++)

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//滿足條件就執行goto語句

  • }

  • }

  • //執行goto

  • LOOP:printf("結束for循環了...."); //請選擇合適位置添加標識符

  • return 0;

  • }

  • 9.形參與實參

    形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;

    實參:實參是在調用時傳遞該函數的參數。

    函數的形參和實參具有以下特點:

  • 形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

  • 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

  • 在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  • 10.函數返回值注意

    注意:void函數中可以有執行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;

    11.遞歸

  • #include <stdio.h>


  • int getPeachNumber(int n) //這里要定義n,要不編譯器會報錯!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

  • num = (getPeachNumber(n+1)+1)*2;

  • printf("第%d天所剩桃子%d個 ", n, num);

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

  • printf("猴子第一天摘了:%d個桃子。 ", num);

  • return 0;

  • }

  • 12.變數存儲類別 !

    12.1.生存周期劃分存儲方式

    C語言根據變數的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。

    靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變數,如全局變數。

    動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變數是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變數;函數調用時的現場保護和返回地址等。

    12.2.存儲類型劃分

    C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;

  • 用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動存儲類別」,屬於動態存儲方式。

  • 用static修飾的為靜態變數,如果定義在函數內部的,稱之為靜態局部變數;如果定義在函數外部,稱之為靜態外部變數。

  • 注意:靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變數在編譯時賦初值,即只賦初值一次;如果在定義局部變數時不賦初值的話,則對靜態局部變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

  • 為了提高效率,C語言允許將局部變數的值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。

  • 注意:只有局部自動變數和形式參數可以作為寄存器變數;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;局部靜態變數不能定義為寄存器變數。

  • 用extern聲明的的變數是外部變數,外部變數的意義是某函數可以調用在該函數之後定義的變數。

  • #includ <stdio.h>

  • //來源公眾號:C語言與CPP編程

  • int main()

  • {

  • //定義外部局部變數

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.內部函數外部函數 !

    在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:

    static [數據類型] 函數名([參數])

    這里的static是對函數的作用范圍的一個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。

    在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:

    extern [數據類型] 函數名([參數])

    C語言規定,在沒有指定函數的作用范圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:一塊連續的,大小固定並且裡面的數據類型一致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]

  • 數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};

  • 數據類型 數組名稱[] = {元素1,元素2,元素3,......};

  • 數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 注意: 1、數組的下標均以0開始; 2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度; 3、如果採用第一種初始化方式,元素個數小於數組的長度時,多餘的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。

  • 15.數組遍歷

  • #include <stdio.h>


  • int main()

  • {

  • int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  • int i;

  • for(i=0;i<10;i++)

  • {

  • printf("%d ",arr[i]);

  • }

  • return 0;

  • }

  • 數組的冒泡排序

  • 冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在後面,直到將所有數字全部排序。

  • 字元串與數組

  • 在C語言中,是沒有辦法直接定義子字元串數據類型的,需使用數組來定義所要的字元串,形式如下:

  • char 字元串名稱[長度] = "字元串內容";

  • char 字元串名稱[長度] = {'字元串1','字元串2',....,'字元串n',''};

  • 注:

  • []中的長度可以省略不寫;

  • 採用第二種方式最後一個元素必須是'',表示結束;

  • 第二種方式不能寫中文!; 輸出字元串時,要使用:printf("%s",字元數組名);或puts(字元數組名);

  • 16.字元串函數

  • strlen(s):獲取字元串s的長度;

  • strcmp(s1,s2):比較字元串;比較的時候會把字元串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;

  • strcpy(s1,s2):字元串拷貝;s2會取代s1中的內容;

  • strcat(s1,s2)將s2拼接到s1後面;注意:s1的length要足夠才可以!

  • atoi(s1)將字元串轉為整數!

  • 17.多維數組

    數據類型 數組名稱[常量表達式1]...[常量表達式n];

    多維數組的初始化與一維數組的初始化類似也是分兩種:

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;

  • 多維數組初始化要注意以下事項:

  • 採用第一種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;

  • 採用第二種初始化時數組聲明必須同時指定行和列的維數。

  • 18.多維度數組的遍歷

    使用嵌套循環

    注意:多維數組的每一維下標均不能越界!

    19.結構體

    C 數組允許定義可存儲相同類型數據項的變數,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

    結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定義結構

    為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是結構體標簽。

    member-list 是標準的變數定義,比如 int i; 或者 float f,或者其他有效的變數定義。

    variable-list 結構變數,定義在結構的末尾,最後一個分號之前,您可以指定一個或多個結構變數。下面是聲明 Book 結構的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:

  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //同時又聲明了結構體變數s1

  • //這個結構體並沒有標明其標簽

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //結構體的標簽被命名為SIMPLE,沒有聲明變數

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE標簽的結構體,另外聲明了變數t1、t2、t3

  • struct SIMPLE t1, t2[20], *t3;


  • //也可以用typedef創建新類型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //現在可以用Simple2作為類型聲明新的結構體變數

  • Simple2 u1, u2[20], *u3;

  • 訪問結構成員

    為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變數名稱和我們要訪問的結構成員之間的一個句號。您可以使用 struct 關鍵字來定義結構類型的變數。下面的實例演示了結構的用法:

  • #include <stdio.h>

  • #include <string.h>

  • //來源公眾號:C語言與CPP編程


  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • };


  • int main( )

  • {

  • struct Books Book1; /* 聲明 Book1,類型為 Books */

  • struct Books Book2; /* 聲明 Book2,類型為 Books */


  • /* Book1 詳述 */

  • strcpy( Book1.title, "C Programming");

  • strcpy( Book1.author, "Nuha Ali");

  • strcpy( Book1.subject, "C Programming Tutorial");

  • Book1.book_id = 6495407;


  • /* Book2 詳述 */

  • strcpy( Book2.title, "Telecom Billing");

  • strcpy( Book2.author, "Zara Ali");

  • strcpy( Book2.subject, "Telecom Billing Tutorial");

  • Book2.book_id = 6495700;


  • /* 輸出 Book1 信息 */

  • printf( "Book 1 title : %s ", Book1.title);

  • printf( "Book 1 author : %s ", Book1.author);

  • printf( "Book 1 subject : %s ", Book1.subject);

  • printf( "Book 1 book_id : %d ", Book1.book_id);


  • /* 輸出 Book2 信息 */

  • printf( "Book 2 title : %s ", Book2.title);

  • printf( "Book 2 author : %s ", Book2.author);

  • printf( "Book 2 subject : %s ", Book2.subject);

  • printf( "Book 2 book_id : %d ", Book2.book_id);


  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    20.共用體

    共用體是一種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型。您可以定義一個帶有多成員的共用體,但是任何時候只能有一個成員帶有值。共用體提供了一種使用相同的內存位置的有效方式。

  • #include <stdio.h>

  • #include <string.h>


  • union Data

  • {

  • int i;

  • float f;

  • char str[20];

  • };


  • int main( )

  • {

  • union Data data;


  • printf( "Memory size occupied by data : %d ", sizeof(data));


  • return 0;

  • }

  • 21.指針

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 實際變數的聲明 */

  • int *ip; /* 指針變數的聲明 */


  • ip = &var; /* 在指針變數中存儲 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指針變數中存儲的地址 */

  • printf("Address stored in ip variable: %p ", ip );


  • /* 使用指針訪問值 */

  • printf("Value of *ip variable: %d ", *ip );


  • return 0;

  • }

  • 22.文件讀寫

    寫入文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;


  • fp = fopen("/tmp/test.txt", "w+");

  • fprintf(fp, "This is testing for fprintf... ");

  • fputs("This is testing for fputs... ", fp);

  • fclose(fp);

  • }

  • 讀取文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;

  • char buff[255];


  • fp = fopen("/tmp/test.txt", "r");

  • fscanf(fp, "%s", buff);

  • printf("1: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("2: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C語言與C++學習路線

    23.排序演算法

    十大經典排序演算法(動態演示+代碼)

    24.查找演算法

    九種查找演算法

    25.面試知識

    C語言與C++面試知識總結

    26.字元串操作

    字元串操作的全面總結

    27.C語言常用標准庫解讀

    C語言常用標准庫解讀

    28. C語言最常用的貪心演算法

    C語言最常用的貪心演算法就這么被攻克了

    29. 常見的C語言內存錯誤及對策

    常見的C語言內存錯誤及對策

    30. C語言實現面向對象的原理

    C語言實現面向對象的原理

    31. C語言/C++內存管理

    看完這篇你還能不懂C語言/C++內存管理?

    32. 再談C語言指針

    再談指針:大佬給你撥開 C 指針的雲霧

    C語言函數指針之回調函數

    C語言指針詳解(文末有福利)

    33. C語言預處理命令

    長文詳解:C語言預處理命令

    34. C語言高效編程與代碼優化

    C語言高效編程與代碼優化

    35. C語言結構體

    C語言之結構體就這樣被攻克了!值得收藏!

    36. 原碼, 反碼, 補碼 詳解

    原碼, 反碼, 補碼 詳解

    37. C語言宏定義

    簡述C語言宏定義的使用

    38. c語言之共用體union、枚舉、大小端模式

    c語言之共用體union、枚舉、大小端模式

B. 學習C語言要些什麼基礎

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

由於C語言簡單易學,已經成為學習編程的入門語言之一。在大學一年級,已經安排C語言相關的學習課程。由此可見,C語言的學習並不需要前置課程,可以輕松入門。附件是一本適合初學者入門學習的C語言書籍。其中包括:基本數據類型,運算符與表達式,控制流,函數,指針,數據結構,輸入輸出等基本基本知識的介紹。能夠熟練運用上述的C語言規則,就可以完成C語言入門學習的內容。

一般要掌握基本的微機原理的知識、英文閱讀的能力。學習語言注意要多動手,多思考調試,還要能堅持不懈,最重要的還有興趣。

只要同學們掌握一些方法,多讀,多寫,克服心理上畏難情緒,C語言是完全可以學好的並且靈活應用的。

至於看什麼書,推薦幾本:
1.C語言入門經典
《C語言入門經典》例子簡單生活化,而且每個例子分析很細。章節安排合理,章末的例子還特別注重思路的引導,而且分析起來特別有成就感。
這本書是自學過程的一本好書。
2.C primer plus
這本書很適合希望系統學習C語言的讀者,正如他的名字,是一本不錯的入門和進階的書。書中的每一個知識點都有很多生動簡單的示例,並給出了相應的運行結果。總之,在看這本書的過程中,有一種一氣呵成的感覺。
3.C和指針
這本書和《專家編程》《C缺陷和陷阱》可以並稱C語言(進階書)三傑。本書的部分內容更適合有C基礎的人看。如ADT、遞歸、指針和數組的部分,書中所述的思想是國內教材所缺乏的。看完本書,能得到一個正確的C語言觀。
4.C程序設計語言
難以置信的是,這樣一本C語言的入門書籍,從hello world開始講起,卻在短小的篇幅里,手把手教你寫了stdio.h stdlib.h
string.h當中大部分常式,實現了二分查找、快速排序、二叉樹、哈希表這些重要的數據結構和演算法。這本書傳遞著一種簡單、優雅、平實和閑適。
5.C專家編程
《C專家編程》展示了最優秀的C程序員所使用的編碼技巧,並專門開辟了一章對C++的基礎知識進行了介紹。書中C的歷史、語言特性、聲明、數組、指針、鏈接、運行時、內存以及如何進一步學習C++等問題進行了細致的講解和深入的分析。

C. 學c語言需要什麼基礎知識

c語言是一種通用的計算機編程語言,應用非常廣泛。C語言的設計目標是提供一種能夠以簡單的方式編譯處理低級內存,生成少量機器碼,不需要任何運行環境支持就能運行的編程語言。

因為C語言簡單易學,所以成為學習編程的入門語言之一。大學第一年已經安排了C語言相關的課程。可見,C語言的學習不需要先修課,可以輕松入門。附件是一本適合初學者學習的C語言書籍。包括:介紹基本數據類型、運算符和表達式、控制流、函數、指針、數據結構、輸入輸出等基礎知識。熟練運用上述C語言規則,即可完成C語言入門學習。

當你對C語言的入門課程有了一定的了解,就可以更深入更專門的學習數據結構,系統介面,圖形開發等。這時候推薦C Primer Plus。能夠更好的理解C語言的運行機制。

根據2016年8月TIOBE的統計結果,目前C語言佔比11.303%,排名第二。雖然和往年相比是歷史最低點,但還是很強勢的。可見,C語言在軟體開發的相關領域發揮著重要的作用。學好C語言也可以為學習其他編程語言打下基礎。

//www.gotrillian.com/pic_f7246b600c3387445e4197e9590fd9f9d62aa09b?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto

D. 學習C語言需要掌握哪些基本知識

語言是一門計算機語言也就是平時所說的編程1~ 你如果一點基礎都沒有的話學習編程我認為 c語言是一個很好的入門語言(很多人都說是vb簡單,但個人認為雖然簡單不適合入門語言學習,除非今後想往.net或basic方面發展)先不說這些!!~在學習c語言之前要掌握的時計算機基礎啊 比如2 8 10 16進制的轉換原碼反碼補碼等鑒於你是初學不用掌握太多的東西需要的知識在以後會慢慢了解適自己的情況而定!~ 至於你說看了看沒看懂 不知道你看的是什麼書 我推薦你一本 譚浩強的《c程序設計 (第二版)》很多人學習c語言都是看的這個(我也不例外呵呵)第一章是介紹c語言的歷史和版本之類的東西了解一下就可以了!~從第二章好好看吧 不是很難應該能看懂!~ C語言幾乎什麼都能做,雖然有的領域C不是最適合的開發工具。網路、多媒體、資料庫,... 都有很多C/C++的庫。 而且C/C++幾乎是最「直接」的高級(中級)語言,和其他高級語言相比,C對計算機的理解更深刻。在程序的執行效率非常重要的情況下,C/C++幾乎是不二的選擇。 就目前來看, C/C++的開發群體也應該是最大的。各個領域技術的最新發展上,幾乎也都能看到C/C++的身影。 C/C++的效率幾乎是沒有可以出其右的,C/C++的適應性和生命力也是極強的。

E. C語言入門知識

char a[20],b[20],c[20];上面的a,b,c都是數組變數,在定義時已經為其分配棧內存,而char (*str1)[20],(*str2)[20],(*str3)[20]; 只是分配了4個位元組的內存來保存指針變數(即變數本身),而指針的值(即指向)還沒有,所以這些指針還不能保存數據!--------------char (*str1)[20],(*str2)[20],(*str3)[20]; str1 str2 str3均為指針,都指向長度為20的char數組.你只定義了指針,但是沒有對其進

F. c語言基礎知識必背有哪些

基礎的理論理解,基本規則:如組織形式,解釋器規定,源文件命名規則等等,還有程序的一些基本結構如:順序結構,選擇結構,循環結構的基本特性,還有就是數據類型及各種運算符的作用了。

動手實踐幫助記憶,多編寫程序,即便不會寫多學著敲敲代碼也是很有用的,記住了要點的同時,提高學習興趣,這非常重要。

C語言

是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。

G. C語言的基礎知識

void
main()是無返回值的main函數,在c中不寫函數返回值類型的話,默認返回值類型是int型的,因此main()和int
main()等價,在程序末要return一個值才行。在vc等編譯器中後一種寫法會被警告。建議適用第一種或者int
main()

H. 學習C語言要些什麼基礎

  • 簡單學習C語言的基礎:

  1. 識字,可以閱讀C語言教材。

  2. 認識英文字母,標點符合,阿拉伯數字,並可以在電腦上打出來。

I. 誰幫我整理一些C語言的基礎知識,謝謝!!

C語言基礎知識
1.1 C語言簡介
C語言於1972年由美國的Dennis Ritchie發明,並首次在配備了UNIX操作系統的DEC PDP-11計算機上實現。它由早期的編程語言BCPL(Basic Combind Programming Language)發展演變而來。1970年,AT&T貝爾實驗室的Ken Thompson根據BCPL語言設計出了較先進並取名為B的語言,通過不斷修改、完善,更先進的C語言問世了。
C語言是一種功能強大、應用廣泛、具有發展前途的計算機語言。它既可用於系統軟體的設計,也可用於應用軟體的開發。許多著名的系統軟體都是由C語言編寫的。C語言具有下列特點:
(1)C語言既具有低級語言直接操縱硬體的特點,又具有高級語言與 自然語言和人的思維邏輯相似的特點,C語言程序易編寫、易查錯,而且實用性很強。
(2)C語言具有豐富的數據類型和運算符,語法結構簡單。
(3)C語言是一種結構化程序設計語言,提供了完整的程序控制語句。
(4)C語言是一種模塊化程序設計語言,適合大型軟體的開發和研製。
(5)C語言還有一個突出的優點就是適合於多種操作系統,如DOS、UNIX,也適用於多種機型,其程序移植性好。
1.2 C語言的數據類型
數據是程序處理的對象,數據類型是數據的內在表現形式。例如,學生的年齡和成績具有一般數值的特點,在C語言中稱為數值型,其中年齡是整數,稱為整型;成績可以為小數,稱為實型。而學生的姓名和性別是文字,在C語言中稱為字元型數據。
C語言具有豐富的數據類型,其中基本的數據類型有整型、實型、字元型。
1.2.1 變數
變數是在程序執行過程中其值可以被改變的量。
1.變數命名規則
和人的取名一樣,變數的命名也有一定的規則。
(1)由字母、數字和下劃線組成;
(2)必須以字母或下劃線打頭;
(3)字母區分大小寫(在系統默認狀態下);
(4)前32個字元有效(在系統默認狀態下)。
例如:a,Book,book,_Make_Cipher都是合法的變數名,且Book與book是不同的變數名,而123A,x+y都不是變數名。
2.變數的數據類型
變數可以是任意的一種數據類型,如整型變數、字元型變數、指針變數等。C語言中的基本數據類型及其特性如表1-1所示。
表1-1 C語言的基本數據類型
數據類型名 數據類型描述 數據類型的長度(位元組) 數據取值范圍
char 字元型 1 0~255
int 有符號整型 2 –32 768~32 767
unsigned int 無符號整型 2 0~65 535
short 短整型 2 –32 768~32 767
long 長整型 4 –2 147 483 648~2 147 483 647
unsigned long 無符號長整型 4 0~4 294 967 295
float 單精度實數 4 |3.4×10–38|~|3.4×1038|
double 雙精度實數 8 |1.7×10–308|~|1.7×10308|
long double 長雙精度實數 10 |3.4×10–4932|~|3.4×104932|

3.變數的定義
每個變數在使用前都必須先定義其數據類型,定義變數數據類型的語法格式如下:

數據類型符 變數名1,變數名2,…;

例如:

int age,score; /* 定義年齡和成績為整型 */
char name[20]; /* 定義姓名為至多含20個字元的字元數組 */

4.變數的存儲類型
當定義某個變數時,C語言的編譯系統就要給該變數分配若干個存儲單元用來存放該變數的值。而在計算機中寄存器和內存都可以存放數據,內存又可分為臨時佔用和長期佔用。變數的存儲類型是指變數在計算機中的存放位置及時間。
定義變數存儲類型的語法格式如下:
存儲類型符 數據類型符 變數名1,變數名2,…;

變數的存儲類型有自動型(auto)、寄存器型(register)、靜態型(static)和外部型(extern),具體特點和使用方法在後面的章節中詳細介紹。
在變數定義時,如未說明存儲類型,則系統默認為自動型(auto)。
5.變數的初始化
變數的初始化是給變數賦初值的一種方法,是指在變數定義時就給變數賦予初始值。變數初始化的方法很簡單,在變數定義的語句中,在變數名後加一個等號和初值即可。
例如:

int x, age=20, score=100;

在上面的定義中,變數x未賦初值,而變數age和score的初值分別為20和100。
在程序中,變數未賦值之前不允許使用,即要遵循「先賦值後使用」的規則。
1.2.2 常量
常量是在程序運行過程中值不發生改變的數據。例如,圓周率3.1415926就是一個常量。常量也有數據類型,它們是整型常量、實型常量、字元常量、字元串常量及符號常量,整型常量及實型常量的數據長度及取值范圍與變數的規定相同。
1.整型常量
整型常量用來表示整數,整型數據可以以不同數制形式來表示,不同的進位制有其不同的表示方式,其表示方式如表1-2所示。
表1-2 整型常量的表示方式
數 制 表 示 方 式 示 例
十進制 一般整數的寫法 0,–22,55
八進制 在八進制整數前加數字0 00,–072,+0331
十六進制 在十六進制整數前加數字0和字母x 0x0,0x1B5,–0xb3

另外,對於長整型常量,應當在其後加後綴L或l,例如30L。30L和30數值一樣,但佔用內存的大小不一樣。30佔用2個位元組的存儲空間,而30L佔用4個位元組的存儲空間。
2.實型常量
實型常量只有十進制數表示方式,它沒有單精度和雙精度之分。其表示方式有定點數表示和浮點數表示兩種。具體表示方式如表1-3所示。
表1-3 實型常量的書寫方法
類 別 表 示 方 式 示 例
定點數 整數部分.小數部分 0.0,1.34,–34.0
浮點數 尾數E(或e)指數 3.57E10,–5.6e–9

說明:
(1)浮點數表示方式相當於數學中的科學計數法,其換算公式如下:
尾數E(或e)指數=尾數×10指數
(2)浮點數中的指數部分只能是整型數,尾數可以大於或等於10。
3.字元常量
字元常量是用兩個單引號引住單個字元來表示的。例如:'A'、'*'、'!'等。使用字元常量時應注意以下幾點:
(1)空格也是字元,表示為'a'。
(2)單引號中必須恰好有一個字元,不能空缺。如' '是錯誤的字元常量。
在C語言中有一類特殊的字元常量,被稱為轉義字元。它們用來表示特殊符號或鍵盤上的控制代碼,常見的轉義字元如表1-4所示。
表1-4 常用轉義字元表
轉 義 字 符 意 義 轉 義 字 符 意 義
\n 回車換行符 \a 響鈴
\t 水平製表符 \" 雙引號
\v 垂直製表符 \' 單引號
\b 左退一格 \\ 反斜杠
\r 回車符 \ddd 1~3位八進制數ddd對應的字元
\f 換頁符 \xhh 1~2位十六進制數hh對應的字元

4.字元串常量
字元串是用雙引號引住的若干個字元。例如,"hello!","485769","a"。
字元串可以不含任何字元,稱為空串,表示為""。
字元串中所含的字元個數稱為字元串的長度。例如,"abc123","3",""的長度分別為6,1,0。計算字元串長度時應注意以下幾點:
(1)對於含有轉義字元的字元串,應將轉義字元計算為1個字元。例如,"abc\\12\n"的長度為7,而不是9;"abc\\\12\n"及"abc\\\123\n"的長度均為6。
(2)在字元串中,反斜杠表示轉義字元的開始,如果其後面沒有表1-4中所列出的轉義符號,則該反斜杠被忽略,並不參與計算長度。例如,"\A"的長度為1,但"\"是非法的。
5.符號常量
上面所介紹的常量都是具體數據,在程序中也可以用特定符號來表示某個常量,這個符號被稱為符號常量。
符號常量的語法格式如下:

#define 符號常量名 常量

例如:

#define PI 3.1415926

經過上述定義後,可以在程序中使用PI來代替3.1415926。
在程序中使用符號常量有兩個好處:一是提高了程序的易讀性;二是為修改程序提供了方便。例如,當不需要太高精度時,只需要將符號常量定義修改為
#define PI 3.14

而不需要在程序中去修改每一處的圓周率。
1.3 算術運算符與算術表達式
用來表示各種運算的符號稱為運算符。C語言中包括以下七大類的基本運算符:算術運算符、邏輯運算符、關系運算符、賦值運算符、逗號運算符、條件運算符和位運算符。本節主要介紹算術運算符,其他的運算符將在後續章節中詳細介紹。
1.3.1 算術運算符
C語言中的算術運算符和數學中的算術運算相似,是對數據進行算術運算的。算術運算符的運算對象、運算規則及結合性如表1-5所示。
表1-5 算術運算符
運算對象個數 名 稱 運 算 符 運 算 規 則 運算對象
數據類型 結 合 性
單目 正 + 取原值 整型或實型 自右向左
負 – 取負值
雙目 加 + 加法運算 自左向右
減 – 減法運算
乘 * 乘法運算
除 / 除法運算
模 % 整除取余 整型
單目 增1(前綴) ++ 先加1,後使用 整型、字元型、指針型變數或數組元素、實型 自右向左
增1(後綴) ++ 先使用,後加1
減1(前綴) – – 先減1,後使用
減1(後綴) – – 先使用,後減1

在C語言中,參加運算的對象個數稱為運算符的「目」。單目運算符是指參加運算的對象只有一個,如+10,–67,x++。雙目運算符是指參加運算的對象有兩個,如2+3,7%3。
相同運算符連續出現時,有的運算符是從左至右進行運算,有的運算符是從右至左進行運算,C語言中,將運算符的這種特性稱為結合性。
加法(+)、減法(–)、乘法(*)與數學中的算術運算相同。例如:3.5+4.7結果是8.2;3.5 – 4.7結果是–0.8;3.5*4.7結果是16.45。
除法運算(/)與數學中的除法不完全相同,它與參加運算的對象的數據類型相關。當參加運算的兩個對象均為整型數據時,其運算結果為數學運算結果的整數部分。如7/4結果為1,而不是1.75。若參加運算的兩個對象有一個是實型或兩個都是實型,那麼運算結果為實際運算的值,如7/5.0的運算結果為1.4。
模運算的運算對象必須為整型,結果是相除後的余數,如7%5結果為2。
增1減1運算符都是單目運算符,用來對整型、實型、字元型、指針型變數或數組元素等變數進行加1或減1運算,運算的結果仍是原類型。
1.3.2 常用數學函數
C語言系統提供了400多個標准函數(稱為庫函數),設計程序時可以直接使用它們。庫函數主要包括數學函數、字元處理函數、類型轉換函數、文件管理函數及內存管理函數等幾類。下面介紹常用的數學函數,其他類型的函數將在後面章節中陸續介紹。
1.函數名:abs
原型:int abs(int i);
功能:求整數的絕對值。
例如,設x=abs(5),y=abs(–5),z=abs(0),則x=5,y=5,z=0。
2.函數名:labs
原型:long labs(long n);
功能:求長整型數的絕對值。
例如,設x=labs(40000L),y=labs(–5),z=labs(0),則x=40000,y=5,z=0。
3.函數名:fabs
原型:double fabs(double x);
功能:求實數的絕對值。
例如,設x=fabs(5.3),y=fabs(–5.3),z=fabs(0),則x=5.3,y=5.3,z=0。
4.函數名:floor
原型:double floor(double x);
功能:求不大於x的最大整數,它相當於數學函數[x]。
例如,設x=floor(–5.1),y=floor(5.9),z=floor(5),則x= –6,y=5,z=5。
5.函數名:ceil
原型:double ceil(double x);
功能:求不小於x的最小整數。
例如,設x=ceil(–5.9),y=ceil(5.1),z=ceil(5),則x = –5,y=6,z=5
6.函數名:sqrt
原型:double sqrt(double x);
功能:求x的平方根。
例如,設x=sqrt(4),y=sqrt(16),則x=1.414214,y=4.0
7.函數名:log10
原型:double log10(double x);
功能:求x的常用對數。
8.函數名:log
原型:double log(double x);
功能:求x的自然對數。
9.函數名:exp
原型:double exp(double x);
功能:求歐拉常數e的x次方。
10.函數名:pow10
原型:double pow10(int p);
功能:求10的p次方。
例如,設x=pow10(3),y=pow10(0),則x=1000,y=1
11.函數名:pow
原型:double pow(double x, double y);
功能:求x的y次方。
例如,設x=pow(3,2),y=pow(–3,2),則x=9,y=9
12.函數名:sin
原型:double sin(double x);
功能:正弦函數。
13.函數名:cos
原型:double cos(double x);
功能:餘弦函數。
14.函數名:tan
原型:double tan(double x);
功能:正切函數。
1.3.3 算術表達式
由算術運算符和運算對象連接形成的式子稱為算術表達式。
算術運算符的優先順序從高到低規定如下:
++ – –
* / %
+ –
位於同一行的運算符的優先順序相同。
1.4 數據類型轉換規則
對數據進行運算時,要求參與運算的對象的數據類型相同(運算得到的運算結果的類型與運算對象也相同)。因此,在運算過程中常常需要對變數或常量的數據類型進行轉換,轉換的方法有兩種,一種是系統自動轉換(又稱為隱式轉換);另一種是在程序中強制轉換(又稱為顯式轉換)。
1.4.1 自動轉換規則
在不同類型數據的混合運算中,由系統自動實現轉換。轉換規則如下:
(1)若參與運算的數據的類型不同,則應先轉換成同一類型,然後進行運算。
(2)將低類型數據轉換成高類型數據後進行運算。如int型和long型運算時,先把int型轉換成long型後再進行運算。
類型的高低是根據其所佔空間的位元組數按從小到大的順序排列的,順序如下:
char,int,long,float,double。
(3)所有的浮點運算都是按照雙精度進行運算的,即使僅含float型單精度量運算的表達式,也要先轉換成double型,再作運算。
(4)char型和short型參與運算時,必須先轉換成int型。
例如,設有:

float PI=3.14;
int s,r=7;
s=r*r*PI;

因為PI為單精度型,s和r為整型,在執行s=r*r*PI語句時,r和PI都轉換成double型後再進行計算,運算結果也為double型,右邊的運算結果為153.86,但由於s為整型,故應將賦值號右邊的運算結果轉換成整型(捨去小數部分),因此s的值為153。
1.4.2 強制類型轉換
強制類型轉換是通過類型轉換運算來實現的,其語法格式如下:

(類型說明符)(表達式)

其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。例如: (float) a 把a轉換為實型;(int)(x+y) 把x+y的結果轉換為整型;而(int)x+y 則只將x轉換為整型。
在使用強制類型轉換時應注意以下問題:
(1)類型說明符和表達式都必須加括弧(單個變數可以不加括弧),如把(int)(x+y)寫成(int)x+y則只是把x轉換成int型之後再與y相加。
(2)對於被轉換的單個變數而言,無論是強制轉換還是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行臨時性轉換,而不會改變變數定義時所聲明的類型。
例如,設有:

float f = –5.75;
int x;
x= (int)f;

將f強制轉換成整數–5,因此x = –5,而f本身的類型並未改變且其值仍為–5.75。
1.5 程序結構
1.5.1 主函數結構
每一個C源程序都是一系列函數的集合。其中,必須有且只能有一個主函數,其函數名為main,其結構如下:
void main(void)
{

}

其中,void main(void) 稱為函數說明部分(又稱函數頭),而

{

}

稱為函數體,函數體中的每個語句行末尾都必須用分號結束。
1.5.2 文件包含命令

C語言系統提供了400多個庫函數,並將這些函數根據其功能分成了若干組,每組都有一個組名。如數學類函數組的組名為math。在C語言系統所安裝文件夾的下級文件夾中有一個與其相對應的文件math.h,這些擴展名為.h的文件稱為頭文件。
include稱為文件包含命令,當用戶在程序中使用到系統的標准庫函數中的函數時,需要在程序中(一般在程序的首部)增加一條預處理語句如#include<stdio.h>,以便告知系統需要使用某個頭文件中的函數。
1.5.3 C語言程序基本結構
一個完整的C語言源程序由如下5個部分構成:
(1)預處理命令;
(2)全局變數說明;
(3)函數原型說明;
(4)主函數;
(5)其他子函數。
一個簡單的C語言源程序只需要(1)和(4)兩個部分,其中「預處理命令」一般是一系列文件包含命令,即include命令。
關於程序結構,應當注意以下幾方面的問題:
(1)可由若干個函數構成,其中必須有且只有一個以main命名的主函數,可以沒有其他函數。每個函數完成一定的功能,函數與函數之間可以通過參數傳遞信息。main()函數可以位於原程序文件中任何位置,但程序的執行總是從main函數開始,main函數執行完畢時程序執行結束。
(2)子函數的結構與主函數相同,即分為函數說明部分和函數體兩個部分。
(3)函數中的每個語句最後要有一個分號,作為語句結束標記。但某些特殊的語句行末尾不需要分號,有時還不能有分號。
(4)「/*」和「*/」括住的任意一段字元稱為「程序注釋」,用來對程序作說明,可以插入到程序的任何地方,且可以跨行使用。程序注釋不影響程序運行結果。
(5)函數的書寫格式很靈活,在一行中可以書寫多個語句(每個語句末尾都要有分號),一個語句也可以寫在多行中。在程序的任何地方都可以插入空格或回車符。
(6)主函數可以調用任何子函數但不能調用它自己,任何子函數之間也可以相互調用,但是子函數不能調用主函數。
下面是一個簡單的C語言源程序:
【例1-1】 求圓的面積。

#include <stdio.h>
void main(void)
{
float r,s,p=3.14;
r=10.5;
s=r*r*p;
printf("圓的面積是:%f ",s);
}

下面是一個較完整的C語言源程序:
【例1-2】 較完整的C語言程序示例。

#include<stdio.h>
#include<conio.h>
int y,z;
void abc(int x);
void main(void)
{
int x;
clrscr();
x=10;
y=20;
z=30;
printf("ok1: x=%d y=%d z=%d \n",x,y,z);
abc(x);
printf("ok2: x=%d y=%d z=%d \n",x,y,z);
getch();
}
void abc(int x)
{
int y;
printf("ok3: x=%d y=%d z=%d \n",x,y,z);
x=100;
y=200;
z=300;
printf("ok4: x=%d y=%d z=%d \n",x,y,z);
}