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