8.1 指針是什么
由于通過地址能找到所需的變量單元,可以說,地址指向該變量單元。將地址形象化稱為“指針”。
直接按變量名進行的訪問,稱為“直接訪問”方式。
還可以采用另一種稱為“間接訪問”的方式,即將變量i的地址存放在另一變量中,然后通過該變量來找到變量i的地址,從而訪問i變量。
指向就是通過地址來體現的。地址指向該變量單元。
如果有一個變量專門用來存放另一變量的地址,則它稱為“指針變量”。
8.2 指針變量
8.2.2 怎樣定義指針變量
定義指針變量的一般形式為
類型名*指針變量名;
如:int*pointer_1,*pointer_2;
左端的int是在定義指針變量時必須指定的“基類型”。
在定義指針變量時要注意:
(1)指針變量前面的“*”表示該變量為指針型變量。
(2)在定義指針變量時必須指定基類型。
一個變量的指針的含義包括兩個方面,一是以存儲單元編號表示的純地址,一是它指向的存儲單元的數據類型(如int,char,float)。
指向整型數據的指針類型表示為“int*",讀作”指向int的指針“或簡稱”int指針“。
8.2.3 怎樣引用指針變量
例8.2 輸入a和b兩個整數,按先大后小的順序輸出a和b
#include<stdio.h>
int main(){int * p1,*p2,*p,a,b;printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p; }printf("a=%d,b=%d\n",a,b);printf("max=%d,min=%d\n",*p1,*p2);return 0;
}
8.2.4 指針變量作為函數參數
函數的參數不僅可以是整型、浮點型、字符型等數據,還可以是指針類型。
swap是用戶自定義函數,它的作用是交換兩個變量(a和b)的值。swap函數的兩個形參p1和p2是指針變量。
例8.4 對輸入的兩個整數按大小順序輸出。
#include<stdio.h>
int main(){void swap(int *p1,int *p2);int a,b;int *pointer_1,*pointer_2;printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);pointer_1=&a;pointer_2=&b;if(a<b) swap(pointer_1,pointer_2);printf("max=%d,min=%d\n",*pointer_1,*pointer_2);return 0;
}
void swap(int *p1,int *p2){int *p;p=p1;p1=p2;p2=p;
}