C 語言 裡面的 指標 , 陣列, 位址算數

2022-03-06 07:27:58 字數 1001 閱讀 4269

如果說,c 語言比較有特色的東西是什麼。我覺得就是,講指標,陣列,位址算數結合在了一起。

當然,這也引起了一些問題,使得,c語言的程式非常的靈魂,有些時候,一些寫法對初學者還比較的

晦澀難懂。比如複製字串,可以有下面的幾種寫法。

void

strcpy (

char

*s, 

char*t)

void

strcpy (

char

*s, 

char*t)

}void

strcpy (

char

*s, 

char*t)

char *s = "hello world.";

char s = "hello world.";

你會發現很奇怪,為什麼 指標 和 陣列 能賦值相同的東西呢?

實際上是乙個在這裡,編譯器做了處理。

第乙個:"hello world."是乙個字串常量。可以認為是乙個指標。然後,*s 指向了這個常量。

而第二個 "hello world." 編譯器做了處理 ,實際上等價於下面的形式

指標算數:

指標的運算,統一了指標和陣列,使得陣列能做的事情,指標都能做,當然,陣列從寫法上要簡潔一些。

指標運算可以分為以下幾類:

1. 賦值: 相同的型別是指標可以進行賦值。

2.加法: 指標可以和數字進行加法運算。

3. 減法: 指標可以和數字進行減法運算,但是不要亂訪問。如果兩個指標指向了同乙個陣列,那麼也可以進行減法的執行。

4. 比較: 如果指標指向了同乙個陣列,還可以進行比較的運算。

不考慮底層的記憶體分配問題,陣列名可以認為是一種受限制的指標。這個不是很準確的理解,可以讓你知道,實際上問題也不是很複雜:

程式設計序就是乙個分配記憶體,操作記憶體的過程。把資料在記憶體,操作來,操作去,就變成程式了。具體怎麼操作合理,如何構建非常複雜的操作

就構成了複雜的電腦科學。

C語言裡面的指標問題

一 變數與指標 1.變數 c語言中每次宣告乙個變數,則內存在會申請乙個該變數型別應該佔據的空間.假設int 型別佔四個位元組 不同系統的位元組數不同 那麼語句 int a a 10 即在記憶體中申請了四個位元組的空間,並將其命名為 a,其值為 10.2.變數位址 int型變數 a在記憶體有乙個具體的...

c語言 指標 ,指標運算,陣列指標

可以看到,i1的記憶體位址與p1的值相同,而p1的位址又是在一塊單獨的記憶體位址儲存。而 就是解引用 解析並返回記憶體位址中儲存的值。比如我們要取上面p1指向記憶體的值就用以下方法來取。printf 取指標指向記憶體的值 p1 d n p1 指標運算 對指標進行算術運算。c語言中的陣列其實就是一塊連...

c 裡面的值傳遞,指標傳遞,位址傳遞詳解

c 裡面的值傳遞 將i和j的值傳給a和b,實參傳給形參,但由於形參不會回傳給實參,故輸出i仍為38,j仍為45 void main void swap int a,int b c 裡面的指標傳遞 這裡是將i和j的位址傳給形參,在函式中指標位址沒有改變,但位址指向的內容改變了。輸出時i為45,j位38...