C語言常見語法錯誤?

經常被一些同學問到關於C語言的問題,大多是編譯不通過,編譯不通過往往是語法錯誤,初學者經常犯錯誤實在看不下去了,特意寫一篇錯誤分享集。

C語言常見語法錯誤

工具/原料

C語言編譯器

PC機

方法/步驟

這裡常見會見到一些同學經常犯這種錯誤,scanf(“...”, 引數1, 引數2, ...);其中引數輸入是指標型別,所以示例中需要b需要取地址,為什麼char a[100]不用取地址呢?因為char a[100]可以看做指標,只需要把a的首地址寫入即可。

C語言常見語法錯誤

跟一些同學說了一下,他彷彿又有點明白了。然而他又說怎麼又是有錯誤的,我明明按照你的要求引數寫入時指標型別。那同學還特意地指出程式裡面說:我申請了一個結構體指d,填入的“d->b”引數不是指標嗎?聽到他這樣說,有問題當然要糾正啦!語重心長地對他說,大哥!你認真看一下,d->b應該是int型別,而不是指標型別吧?他聽了好像不怎麼明白,我就舉了一個例子,結構體好像是一個容器,容器裡面存放著型別變數,而通過結構體容器找裡面的內容是比如找的是結構體成員b,那b的型別是int型,具體怎麼找用d->b找到b變數,那d->b是什麼型別呢?當然是d結構體所指向與b的int型別。

C語言常見語法錯誤

這一句沒語法錯誤,卻是最多初學者這樣去寫的,他們就會說,為什麼我輸入一個數字後按回車怎麼沒反應的呢?咋一看程式才發現多了一個”\n”,具體原理是這樣的,當你程式是scanf(“%d”, &i)輸入數字後回車是可以輸入的,但是變成scanf(“%d\n”, &i);時候就需要回車兩次,因為\n需要格式化輸入。

C語言常見語法錯誤

標頭檔案寫錯也是很多人犯的,比如卻後綴‘.h’,系統標頭檔案需要使用<>括住,而自定義標頭檔案使用” ”,在linux C裡面<>和” ”還是有區別的。

正確寫法是:

#include

#include

#include “func.h”

C語言常見語法錯誤

這裡混淆了字元常量與字串常量,字元常量是使用單引號括起來的單字元,字串常量才是使用雙引號,正確寫法是char c = ‘a’;或者char *c = “a”;

C語言常見語法錯誤

這裡也是很多初學者犯的錯誤,忽略‘=’和‘==’的區別。在C語言中‘=’是賦值運算子,‘==’是關係運算符,顯然這裡做的是i是否等於0的判斷,這裡應該改成if(i == 0) i++;

C語言常見語法錯誤

這裡的問題也是初學者犯得非常多的錯誤,不加分號或多加分號。很多學生都會問,我看了幾次程式,確定沒什麼問題的啦!還是對著你的示例程式敲的,不可能錯的。認真地幫他看了一下,原來都是少加分號和多加分號了。int i = 0; 需要加分號,而if(i == 0)和for迴圈後面不需要加分號,因為如果加了分號,if語句就失去判斷的作用而for就會失去迴圈的作用。因為‘;’代表的是結束。

C語言常見語法錯誤

還有一些格式上的錯誤、關鍵詞寫不完整、區分大小寫。正確應該是scanf(“%d%d%d”, a, b, c);

C語言常見語法錯誤

總結一下,學習嵌入式程式設計特別是在C語言上要學會如何找錯誤,一般有錯誤都是在編譯輸出終端裡面找,會提示那一行出錯或者錯的是什麼編譯器都會大概告訴你,學會找出問題所在再去解決它才是我們真正需要的。

注意事項

注意養成良好的程式設計習慣;

不同編譯器檢查語法方式不一樣。

問題, 語言, 錯誤, 編譯, 語法錯誤,
相關問題答案