C語言 指標

2021-10-04 19:57:42 字數 2266 閱讀 1571

指標:

指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數位址之前,對其進行宣告。指標變數宣告的一般形式為

int

*ip;

/* 乙個整型的指標 */

double

*dp;

/* 乙個 double 型的指標 */

float

*fp;

/* 乙個浮點型的指標 */

char

*ch;

/* 乙個字元型的指標 */

空指標:

在變數宣告的時候,如果沒有確切的位址可以賦值,為指標變數賦乙個 null 值是乙個良好的程式設計習慣。

int

*p =

null

;

指標的宣告與初始化:

/* 方法1:使指標指向現有的記憶體 */

int x =1;

int*p =

&x;// 指標 p 被初始化,指向變數 x ,其中取位址符 & 用於產生運算元記憶體位址

/* 方法2:動態分配記憶體給指標 */

int*p;

p =(

int*

)malloc

(sizeof

(int)*

10);// malloc 函式用於動態分配記憶體

free

(p);

// free 函式用於釋放一塊已經分配的記憶體,常與 malloc 函式一起使用,要使用這兩個函式需要標頭檔案 stdlib.h

取值

需要使用 『*變數名』獲取指標的內容

動態記憶體分配:

系統為了有效的管理記憶體,把記憶體劃分為:棧區、堆區、靜態區、常量區、**區。

棧區:

堆區:

指標陣列的使用

void

strmcpy

(char

* t,

int m,

char

* s)

printf

("t2 = %s"

,t);

//t1與t2 的列印結果不同,原因是因為t的位址發生變化

//2:間接使用 列印每乙個字元

char

*p = t;

while

(*p!=

'\0'

)printf

("t = %c"

,*p)

;//3:間接使用 求長度

char

*q = t;

int i=0;

while(*

(q+i)

!='\0'

)/*還可以寫成陣列的形式*/

while

(q[i]

!='\0'

)

字串的部分複製

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

/*方式一:*/

char

*pt=

(t+m)

,*qs;

qs=pt;

s=qs;

// printf("s0 = %c\n",*s);

// printf("qs = %c\n",*qs);

// printf("t = %c\n",*pt);

while

(*pt!=

'\0'

)// puts(s);

// printf("%s\n", s);

qs='\0'

;/*方式二:*/

int tlen =0;

//字串t的長度

while

(t[tlen]

!='\0'

)// printf("tlen = %d\n",tlen);

int slen =0;

if(tlen < m )

else

s[slen]

='\0'

;}

C語言指標

指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...

C語言指標

1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...

c語言指標

編寫程式,在主函式裡用指標陣列輸入六個字串,再用另乙個函式對這六個字串排序,並在主函式中輸出排好序的字串。include void sort char s,int n char temp for int i 0 ifor int j 0 jif strcmp s j s j 1 0 temp s j...