char stuname ,name;
//定義字元型變數stuname,name
char
*pstu ;
//定義指向字元型變數的指標變數pstu
char
*pnew;
//定義指向字元型變數的指標變數pnew
pstu =
&stuname;
//取變數stuname位址賦值給指標變數pstu
pnew = pstu;
//把指標變數pstu賦值該pnew
name =
*pnew;
//把pnew指向的記憶體單元的值賦給name
2、陣列(存放資料的容器)
陣列元素本身不能被賦值(可以初始化)
如:int ar =;//引用時下標從零開始,0–n-1;
也可以採用遍歷:
for (i=
0; iint a[3][5]; //l理解為乙個三行五列的矩陣
初始化:
int a[3]
[5]=
,,,}
;
或者遍歷:
for(i=
0; i<
3;i++
)}
注:
二、深入理解指標和陣列
1、指標與陣列本質聯絡
陣列中 &a = a = a[0]; 陣列的儲存位址由第乙個儲存單元a[0]的位址確定,這三個式子意思都一樣,表示a[0]的位址。
所以 :
a +2=
=&a[2]
;*(a+2)==
&a[2
];
函式引數表中的陣列實際上就是指標;
sizeof(a)== sizeof(int*);
因此,以下四種函式原型是等價的:
int
sum(
int*ar,
int n)
;int
sum(
int*
,int);
intsum
(int ar,
int n)
;int
sum(
int,
int)
;
所以:
int int a[10];
int *p = a; //無需&操作
運算子可以對陣列做,也可以對指標做:
p[0] 等價於a[0];
*運算子可以對指標做,也可以對陣列做:
*a = 25;
陣列變數是const的指標,所以不能被賦值:
int a 等價於 int *const a;
int
*const q =
&i;//q是const
*q =26;
//ok
q++;//error
//可以這麼理解:指標本身是唯讀的const不能變,而它指向的變數可以變
(2)所指是const:表示不能通過這個指標去修改那個變數:
const
int*p =
&i;*p =26;
//error
i =26
;//ok
p =&j;
//ok
//可以認為*p是const,但指標本身可以變,變數i本身可以變
總結:判斷哪個被const了的標誌是const在*前還是後面
const * --所指的東西不能被修改
*const–指標不能被改變。
三、指標作為函式引數的巧妙用途以下是實踐函式:
/* 指標練習1,指標概念的辨析 */
#include
voidf(
int*p)
;//函式原型,void表示函式沒有返回值,如果是()內的void表示函式不帶引數
voidg(
int k)
;//用來對照指標變數的
intmain
(void
)voidf(
int*p)
voidg(
int k)
/* 指標練習2,指標一些具體的使用 */
#include
void
swap
(int
*pa,
int*pb)
;int
main
(void
)void
swap
(int
*pa,
int*pb)
//使用指標來操作交換函式swap()
/* 指標練習3 ,用乙個函式找出陣列中最大數和最小數 */
#include
void
minmax
(int a,
int len,
int*max,
int*min )
;int
main
(void);
int min, max;
minmax
(a,sizeof
(a)/
sizeof
(a[0])
,&max,
&min)
;printf
("min = %d,max = %d"
,min,max)
;return0;
}/*函式返回多個值時,某些值只能通過指標返回(其實該函式並沒有返回值,
但是通過指標的特性,直接找到所要操作變數的位址,然後改變裡面的值,這裡可以模擬為返回值*/
//傳入的引數實際上是需要儲存的帶結果的變數
void
minmax
(int a,
int len,
int*max,
int*min)
if(a[i]
>
*max)
}}
到此結尾了,我這裡的多為筆記總結,要深入理解還是要自己敲幾行試試。 C語言指標用法總結 指標與陣列
c include intmain int i printf d n a a指向a 0 a 0 int的元素,a的型別就是 int 4,1跨度是4個位元組 printf d n a 1 printf d n a a這個位址指向整個陣列,int 5 1跨度是整個陣列的位元組長度,即20個位元組 pri...
C 指標陣列與陣列指標
說實話,c語言真的很讓人蛋疼,它不像物件導向的語言,我們重心在設計程式上。而使用c語言,你不僅要考慮程式的設計,你還要考慮很多他的使用細節,不然一不小心你怎麼死的都不知道。但是,個人感覺,c語言的魅力是其他任何語言都比不了的!繼續看。陣列指標 範例 typedef int aint5 5 typed...
C 指標陣列與陣列指標
陣列指標 也稱行指標 陣列指標 a pointer to an array,即指向陣列的指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣...