1.通過位址能找到所需的變數單元,位址指向該單元變數。
2.乙個變數的位址稱為該變數的「指標」
3.乙個變數專門存放另乙個變數位址(即指標),稱為「指標變數」
4.定義指標變數一般形式 : int *pointer_1,*pointer_2;
int為基型別 指標變數可指向的變數型別。
5.指標變數前面的「*「表示為該變數的型別為指標型變數
6.a是指向整型資料的指標變數(正確讀法)
一、輸入兩個整數,按先大後小的順序輸出兩個數
#include
int main()
int*p,a,b,*p1,*p2;
printf("intputtwo numbers:");
scanf("%d%d",&a,&b);
p1=&a;p2=&b;
if(b>a)
p=p1;
p1=p2;
p2=p;
printf("maxnumber is %d",*p1);
二、現在用函式處理,而且用指標型別的資料作函式引數。
#include
int main()
voidswap(int *,int *);
inta,b,*pointer_1,*pointer_2;
printf("pleaseinput two numbers :\n");
scanf("%d%d",&a,&b);
pointer_1= &a;
pointer_2= &b;
if(b>a)
swap(pointer_1,pointer_2);
printf("max= %d,min = %d",*pointer_1,*pointer_2);
return0 ;
void swap(int *p1,int *p2)
intp;
p=*p1;
*p1=*p2;
*p2=p;
函式中不可寫成*p=*p1;因為由於未給p賦值,因此p中並無確定的值(它的值是不可預見的),所以指向的單元也是不可預見的。所以,對*p賦值就是向乙個未知的儲存單元賦值,不可以。
如果寫成swap(int x,int y)
inttemp;
temp=x;
x=y;
y=temp;
注意1:傳遞值到函式形參,並未影響實參,形參交換之後便釋放了。
注意2:不能企圖通過改變指標形參的值而使指標實參的值改變。
注意3:不可能通過執行呼叫函式來改變實參指標變數的值,但是可以改變實參指標變數所指向變數的值。
例三:輸入3個整數a,b,c,要求由大到小的順序將他們輸出,用函式實現。
#include
int main()
voidexchange(int *p11,int *p22,int *p33);
inta,b,c,*p1,*p2,*p3;
printf("pleaseinput three numbers:");
scanf("%d%d %d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf("theorder is :%d >%d >%d",a,b,c);
return0;
void exchange(int *p11,int *p22,int *p33)
voidswap(int *q1,int *q2);
if(*p11<*p22)
swap(p11,p22);
if(*p11<*p33)
swap(p11,p33);
if(*p22<*p33)
swap(p22,p33);
void swap(int *q1,int *q2)
inttemp;
temp=*q1;
*q1=*q2;
*q2=temp;
總結:用指標做連線,改變量值(實參指標)
C初級 指標
2.2.指標定義和使用方式 3.拓展知識 4.例項 遞迴就是一層層的進行計算 例如 求 123 n 的值 int fun int n 2.1.記憶體位址和指標 2.1.2 指標說明 2.2.指標定義和使用方式 2.2.1 指標定義格式 int p 表示定義了乙個名為p的短整型指標變數2.2.2 針涉...
C語言初級指標
include include int main printf d n sizeof a 求整個陣列的位元組數,4 4 16 printf d n sizeof a 0 此時陣列名隱式退化成指標,在32位作業系統下是答案是4 printf d n sizeof a 取到了整數1,答案是4 print...
c語言指標初級
指標其實就是乙個變數,只不過它和普通變數有所不同,我們知道變數是用來存值的,指標也不例外,只不過它存的值是乙個位址,即就是用來標記某塊記憶體的位置。首先我們定義乙個指標 基型別 指標變數名 int i 0 int p i 這裡我們定義了乙個int 型別的指標,我們用該指標變數儲存乙個整型資料的位址 ...