如何學習c程式設計與這個初學者的專案

想開始程式設計,但不確定C?試試這個C程式設計初學者教程,看看它是否適合你。...

學習編程是一種積累的經驗。除了學習所選語言的語法外,還必須學習所有編程語言使用的一般原則。

learn-c

理解和學習C編程可能會讓人望而生畏,但在開始時有一些基本的想法值得你熟悉。一個簡單的項目是學習C語言基礎的好方法。

那你應該從哪裡開始呢?打個招呼!

1你好,世界!

幾乎所有編碼課程的第一部分都是helloworld程序。詳細介紹一下C語言與其他語言的一些不同之處。首先,打開您選擇的文本編輯器或IDE,然後輸入以下代碼:

#include <stdio.h>/* this is a Hello World script in C */int main(void){ printf("Hello, World! "); return 0;}

這段代碼在結束程序之前打印到控制檯。把它保存在一個容易記住的地方,作為hello.c。現在您需要編譯和構建文件。

讓它跑起來

通常,運行C腳本不需要在計算機上安裝任何附加軟件。打開終端窗口(如果正在運行Windows,則打開命令提示符)並導航到保存腳本的目錄。

編譯和運行文件的方式因系統而異:

  • Windows用戶:通過鍵入cl hello.c並按enter鍵使文件可執行。這將創建你好.exe在同一個文件夾中,您可以通過鍵入hello來運行該文件夾。
  • Linux和macOS用戶:鍵入gcc-o hello.c並按enter使其可執行,然後通過鍵入./hello來運行它。

無論使用哪種方法,運行腳本都應顯示以下內容:

Output showing the results of a Hello World! sketch in C

如果在Windows上不起作用,請確保在管理員模式下運行命令提示符。對於macOS,您可能需要從App store安裝Xcode,並從StackOverflow執行以下步驟。

現在,讓我們逐行查看這個程序,看看它是如何工作的,並對其進行改進!

幕後黑手:理解c語言

預處理器

您剛剛創建的腳本從包含庫開始。

#include <stdio.h>

腳本中的第一行稱為預處理器。這是在編譯腳本的其餘部分之前執行的。在本例中,它告訴腳本使用stdio.h庫。有大量的預處理器可用於不同的任務。

h負責從程序的用戶那裡獲取輸入,並將信息輸出回用戶。

/* this is a Hello World script in C */

下一行是註釋。斜槓和星號告訴編譯器忽略它和結束的星號和斜槓之間的所有內容。雖然這看起來似乎毫無意義,但能夠給自己和他人留下關於代碼的清晰註釋是一個必須養成的習慣。

主要功能

int main(void)

每個C程序都必須有一個main函數。Main是一個返回整數的函數,用int表示。Main後面的括號是它的參數,不過在本例中,它不接受任何值,這就是為什麼要使用void關鍵字。

在兩個花括號之間編寫要執行的代碼。

{ printf("Hello, World! "); return 0;}

在函數內部,調用printf()函數。與main()一樣,printf也是一個函數。不同的是,printf是您在開始時包含的stdio庫中的一個函數。

Printf將括號中引號之間的任何內容打印到控制檯。\n是一個名為newline的轉義序列,它告訴編譯器在繼續之前跳到控制檯中的下一行。

注意,這些行以分號結尾,編譯器使用分號將一個任務從下一個任務中拆分。注意這些分號——遺漏它們是事情不順利的第一個原因!

最後,函數返回數字0,結束程序。main()函數必須始終返回一個整數,並且返回=0;向計算機發出進程成功的信號。

瞭解這個腳本的每一步對於學習C語法以及語言的工作方式都是一個很好的開端。

2創建自己的c函數

你可以在C中創建你自己的自定義函數,而不是在主函數中打印Hello World,而是創建一個新函數來完成它。

void print_for_me(){ printf("Hello, World! ");}

讓我們把它分解一下。

void是一個關鍵字,表示下面的函數不會返回任何內容。

print \u for \u me()是函數的名稱,空括號表示它不需要參數即可工作。參數是傳遞給函數使其工作的任何信息——稍後您將添加自己的參數以更改輸出!注意:這與上面使用void的main()函數不同。該函數不能接受參數,而這個函數可以(但在本例中,不必)。

您應該很熟悉這個代碼塊——它只是原始main函數的print語句。

現在,您可以從主函數調用這個函數。

int main(void){ print_for_me(); print_for_me(); return 0;}

您可以在這裡看到使用自己的函數的好處。而不是輸入printf(“你好,世界!\n“)每次可以調用函數兩次。

現在看來這似乎不太重要,但是如果print\u for\u me函數包含大量代碼行,那麼能夠如此輕鬆地調用它將大大節省時間!

Hello world outputting twice through multiple function calls

這是你在整個教育過程中會遇到的編程的基本思想。只編寫一次自己的函數,而不是一遍遍地編寫相同的大塊代碼。

三。在c語言中使用函數原型

原型是初學者C語言區別於其他語言的主要方式之一。簡而言之,原型就像是以後定義的函數的預覽。如果在main函數之後編寫print \u for \u me()函數,編譯時可能會收到警告:

Composite Image showing code with no prototype and the warning the c compiler gives

警告消息告訴您,編譯器在聲明print\u for\u me函數之前已運行,因此無法確定程序運行時是否正常工作。

代碼仍然可以工作,但是通過使用原型可以完全避免警告。

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

通過查看完整的程序,您可以看到print\u for\u me()的原型存在於程序的開頭,但不包含任何內容。prototype函數向編譯器顯示函數的外觀,以及它是否需要參數。

這意味著,當您在main函數中調用它時,編譯器知道是否正確調用了它,並且可以在需要時拋出警告或錯誤。這可能是現在看起來很奇怪的事情,但現在瞭解它們會對將來有所幫助。

Hello world outputting twice through multiple function calls

這個程序在沒有原型的情況下仍然可以工作,但是它們是很好的使用方法。輸出現在看起來還是一樣的,讓我們改變它,使它更個人化!

4向c函數傳遞參數

更改腳本

在最後一步中,您將詢問用戶的姓名,並記錄他們的輸入。然後在之前創建的函數中使用它。在C語言中,單詞不像其他編程語言那樣被稱為字符串。

相反,它們是單個字符的數組。數組的符號是[],關鍵字是char。首先在腳本開始時更新原型函數:

#include <stdio.h>void print_for_me(char name[]);

現在,編譯器將知道腳本後面的函數採用一個名為name的字符數組。到目前為止,這個角色不存在。更新您的主要功能以創建它,並使用它存儲用戶輸入:

int main(void){ char name[20]; printf("Enter name: "); scanf("%s", name); print_for_me(name); print_for_me("Everyone!"); return 0;}

main中的第一行創建了一個字符數組,其中包含20個可能的空格,稱為name。接下來,將提示用戶使用printf輸入他們的名稱。下一行使用一個名為scanf的新函數,該函數接受用戶鍵入的下一個單詞。

“%s”告訴函數它應該將數據存儲為字符串,並將其命名。

修改函數

現在,當您為我調用print時,可以在括號中包含名稱。在下一行,您將看到您還可以傳遞其他字符,只要它們在引號之間。這兩次,括號中的內容都會傳遞給print\u for\u me函數。

現在修改它以使用您提供的新信息:

void print_for_me(char name[]){ printf("Hello, "); puts(name);}

在這裡,您可以看到括號已經更新,就像腳本開始時的原型一樣。在內部,您仍然使用printf打印hello。這裡的一個新函數是puts。這是printf的更高級版本。

放在括號中的任何內容都將打印到控制檯,並自動添加一個換行符(您先前使用的\n換行符)。

保存和編譯代碼的方法與之前相同——請注意,如果不想覆蓋以前的程序,可以將程序命名為其他名稱。我給我的名字叫hello2:

The finished program in C

如您所見,在發送預設的問候語“Everyone!”之前,程序接受輸入並在函數中使用它再次給同一個函數提供兩個獨立的輸出。

c程序設計的abcs

這個程序很簡單,但其中的一些概念並不簡單。更高級的C代碼必須寫得非常好,以防止崩潰。這就是為什麼許多人認為這是一種優秀的語言,學習第一,因為它灌輸給新的程序員良好的習慣。

其他人認為學習C++是一個更好的想法,因為它是建立在C上,同時保持較低的系統控制。(還有一個生鏽的問題,它是一個與C++類似的令人興奮的編程語言。)

有一點是肯定的:像Python這樣的語言對初學者更加友好。對於一種古老的語言來說,C仍然到處使用,但是Python可能是未來的語言!

  • 發表於 2021-03-22 14:01
  • 閱讀 ( 46 )
  • 分類:程式設計

你可能感興趣的文章

今年你能做的7個arduino聖誕專案

...如果你從來沒有這樣做過。但不要擔心:我們有一個學習如何焊接的偉大指南! ...

  • 發佈於 2021-03-12 03:34
  • 閲讀 ( 61 )

5節課,成為一名真正優秀的自學程式設計師

...的程式語言編寫任何程式碼。它只會讓你明白任何問題是如何透過一系列合乎邏輯的步驟來解決的。所學到的經驗將使您能夠自信地學習任何程式語言。 ...

  • 發佈於 2021-03-12 09:53
  • 閲讀 ( 51 )

你需要了解的12個樹莓皮音樂專案

...以從Github下載的簡單指令碼。如果您願意,指南還告訴您如何新增NFC支援,但您可以跳過這一步。這是許多不必要的工作。 ...

  • 發佈於 2021-03-12 21:52
  • 閲讀 ( 51 )

讓萬聖節你自己與這些石化的3d列印

...面是為你的家設定最大的遊客恐慌因素。我們已經介紹瞭如何建立Arduino驅動的恐嚇機器,讓人們在前往你的門前三思而後行。 ...

  • 發佈於 2021-03-12 23:32
  • 閲讀 ( 58 )

關於arduino你一直想知道的10件事

... 10如何開始使用arduino? ...

  • 發佈於 2021-03-13 02:49
  • 閲讀 ( 54 )

arduino nano利弊:最便宜的arduino值得嗎?

...過micro-USB電纜與計算機相連。這是一個完美的微控制器,學習電子和程式設計的愛好,它的大小使它成為需要一個小尺寸的專案建設的優秀。 ...

  • 發佈於 2021-03-13 04:51
  • 閲讀 ( 53 )

想設計一本書的封面嗎?看這個免費的33集photoshop課程

... 他們最新推出的免費課程是一個33集的課程,將教你如何從頭開始設計一本兒童讀物的封面。 ...

  • 發佈於 2021-03-13 14:47
  • 閲讀 ( 44 )

9個最好的pi程式設計資源,把你的樹莓pi使用

...是Raspberry-Pi程式設計的最佳選擇。有一個雜誌區和奇妙的如何角落以及。 ...

  • 發佈於 2021-03-14 03:57
  • 閲讀 ( 52 )

程式設計與web開發:有什麼區別?

...用與構建web應用程式的人不同的語言——我們已經討論瞭如何選擇正確的web程式語言。 ...

  • 發佈於 2021-03-15 15:29
  • 閲讀 ( 46 )

適合初學者的5個最佳專案管理技巧

...而,作為一個專案經理的許多部分都是透過經驗和過程來學習的。如果你是第一次擔任專案經理的角色,這裡有五個專案管理技巧可以幫助你開始。 ...

  • 發佈於 2021-03-15 15:48
  • 閲讀 ( 50 )