C語言學習周總結006(指標)

2022-09-10 04:00:14 字數 1771 閱讀 8115

指標(pointer)可謂是c語言的一大精髓,同樣也是c語言學習的一大難點,早在正式開始學習c語言前就聽說過這一大名,如今我也開始接觸到了它。通過課上的學習以及課下的整理,我對指標有了一些了解。

在認識指標前,我們先要認識記憶體位址這一概念。要知道,我們每定義乙個變數,系統就會在記憶體中為該變數分配一段記憶體空間,這段空間的長度取決於變數型別(如int型為4個位元組),而這段空間在記憶體中就存在著位址,系統讀取乙個變數會先找到其首位址,然後再按其型別讀取接下來的幾個位元組,這裡的首位址就是該變數的記憶體位址。而指標(變數)就是儲存著某一變數位址的變數,系統可以通過指標(變數)訪問其所指向的另乙個變數,因此形象地將其稱為指標。 指標變數的定義通常如下圖所示:

注意指標變數p的型別必須與所指向變數的型別相同。

應用指標我們可以定義乙個交換兩個變數值的函式swap,如下圖所示:

編寫函式strmcpy將輸入字串char *t中從第m個字元開始的全部字元複製到字串char *s中。若m超過輸入字串的長度,則結果字串應為空串。

void strmcpy( char *t, int m, char *s );

裁判測試程式樣例:

#include #include 

#define maxn 20

void strmcpy( char *t, int m, char *s );

void readstring( char s ); /*

由裁判實現,略去不表

*/int

main()

/*你的**將被嵌在這裡

*/

分析:複製前先要判斷給定第m個字元是否在字串t的範圍內,若超出範圍直接將新字串s賦值為空(null),若在範圍內則進行下一步的複製。具體步驟見**注釋。

**:

void strmcpy( char *t, int m, char *s )

s[len] = '

\0'; //

字串必須以'\0'結尾才有效

}else

}

執行測試:輸入:9(換行)this is bubble speaking

執行結果:bubble speaking

輸入:10(換行)oversize

執行結果:(空)

程式執行成功!

C語言學習(三) 指標

指標的定義int p char p float p指標變數所佔記憶體的大小 跟前面定義的型別無關 而跟系統有關 16bits作業系統 2b 32bits作業系統 4b 64bits作業系統 8b 指標指向乙個值所在的第乙個位元組 通常乙個位址存放乙個位元組 const修飾指標 指標指向乙個字串時 如...

C語言學習4 指標

int a 10 int p a 一級指標 int s p 二級指標 int p 10 指向陣列的指標 int s 10 指標指向放指標的陣列 這個陣列有十個空間 int p 10 開闢10個空間 每個空間放指標 例如 int br 10 int s 10 br int ar 10 int p 10...

C語言學習6指標

1.指標與指標變數 2.直接訪問和間接訪問 3.指標的定義格式 方法一 int a int p a 方法二 int p,a p a 1.概念2.一般形式定義 int b 3 指標陣列,表示有三個元素,每個元素都是int int p 3 陣列指標,也可為行指標,它指向包含3個元素的一維陣列 1.定義乙...