c程式設計中需注意的問題

2021-06-21 13:25:18 字數 1351 閱讀 9525

1.對於指標變數,乙個非常中的操作就是要判斷其有效性,即是否為空指標。

如利用動態記憶體申請運算子申請記憶體後,需要首先對記憶體是否申請成功進行判斷。

2. static 再c語言中宣告函式時,該static 函式只具有檔案作用域。及該函式的作用域被限制再宣告它的模組內。

3.變數型別的自動轉換:

當乙個操作符對兩個不同型別的變數進行操作時,低型別變數會自動轉換為高型別變數。當兩個變數僅存在有無符號的差別時,有符號變數自動轉換為無符號變數。

void foo(void)

以上**的執行結果為》6,因為有符號數-20自動轉換為了乙個非常大的無符號數。

4.巨集定義盡量少使用,因為你不知道會在什麼地方犯錯。

#define dps int

*typedef int

* gps;

dps t1,t2;

gps t3,t4;

在上面的這段**中,dps t1,t2;本意為定義兩個整形指標,可是由於紅定義的侷限性(暫且這麼說吧),實際上是定義了乙個整形指標和乙個整形變數。

而typedef 則不具有這個問題。

5. 下面的這段**測試的是什麼問題呢,慣性思維還是懶得思考?

#include

#include <

string

.h>

int main(

int argc,char *argv)

輸出結果為nothing 。

6.關於空指標

c語言中,每種 指標型別都對應這乙個空指標,不同型別的指標對應的空指標的內部表達可能是不想同的。(空指標的內部值不一定是0,不同型別的cpu 對應著不同的空指標內部值,同乙個型別的cpu不同的指標型別對應空指標內部值也可能不想同,別忘了c語言廣泛應用於嵌入式系統)。

c語言中,我們使用0和null表示空指標。實際上再編譯時編譯器將null替換為0,再將0轉換為該型別cpu對應的空指標內部值。

7.函式指標

void fun(void)

;void (

*fp)()

=fun;

cout<

<

*fp<

上述**執行後,我們可以發現*fp與fp的值是相等的,這與其他型別的指標變數是不同的。(函式編譯後是什麼樣的指令形式?)

這也導致了利用函式指標呼叫函式時具有一下兩種不同的形式:

(*fp)()

;fp();

兩者的結果是一樣的。雖然前者看起來更符合指標的定義,但是ansi c也接受後者這種形式。

8.函式fun的宣告可以位於另乙個函式的體內。但是不可以在其體內進行定義。

並且函式fun 可以在其宣告的函式體以外的地方呼叫。 0

給主人留下些什麼吧!~~

C語言程式設計需注意的方面 筆記

一 書寫風格 良好的程式設計風格是提高程式可靠性非常重要的手段,也是大型專案多人合作開發的技術基礎。具體的變成格式每家公司都有規範,但作為乙個初學者養成良好的程式設計風格還是有必要的。1 空行的使用 空行起著分隔程式段落的作用。空行得體 不過多也不過少 將使程式的布局更加清晰。空行不會浪費記憶體,所...

Spring MVC 表單提交中需注意的問題

spring mvc 有用於表單繫結的標籤。但這些標籤最終也會生成標準的 html 頁面。所以,理論上這些標籤是不需要的,只要模擬它們生成的 html 就可以了。spring mvc 的 form 標籤生成的 html 很有規律 元素的 id 屬性對應 modelattribute,input 元素...

在Jni中需注意的記憶體問題

jni中需注意的記憶體問題 以下函式都是需要成對出現的 getstringutfchars releasestringutfchars getstringcritical releasestringcritical getstringregion setstringregion getarrayel...