1.指標是什麼?
在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為」指標」。意思是通過它能找到以它為位址的記憶體單元。
2.陣列是什麼?所謂陣列,是有序的元素序列。 若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。用於區分陣列的各個元素的數字編號稱為下標。陣列是在程式設計中,為了處理方便, 把具有相同型別的若干元素按無序的形式組織起來的一種形式。 這些無序排列的同類資料元素的集合稱為陣列。陣列是用於儲存多個相同型別資料的集合
陣列的兩種初始化
char arr= //末尾無'\0'
cahr arr="abcde"
//末尾有『\0'
3.指標陣列和陣列指標**指標陣列**:指標陣列是陣列,是乙個存放指標的陣列。
int *p[10] //p和[10]先結合(組成陣列),再和*結合(形成陣列指標)
**陣列指標**:陣列指標是指標,這個指標是指向陣列的。
int (*p)[10] //由於()的參與*和p先結合,p是乙個指標變數,然後指向乙個10個整數的陣列
//優先順序高於*
4.函式指標
void test()
//下面pfun1和pfun2誰能存放test函式的位址?
void (*pfun1)();
void *pfun2();
我們先來分析一下,能夠儲存位址,這就要求是乙個指標,通過上面(陣列指標和指標陣列)的判斷,我們發現*pfun1是指標。指標指向乙個無引數的函式,返回型別是void
(*(void(*)()0)()
我們從內往外一步一步來分析:
1、(void(*)()0 將0強制轉換為陣列指標
假設 a=(void(*)()0
2 、 *a 將a解引用
3、整體是個函式
void (*signal(int,void(*)(int)))(int);
1、signal是一次函式宣告
2、signal函式的引數:第乙個是int(整形),第二個是函式指標,該函式指標指向的函式引數為int,返回型別是void
5、函式指標陣列
函式指標陣列:陣列是存放相同型別資料的儲存空間,當我們把函式的位址存到乙個陣列中,這個陣列就叫做函式指標陣列。
通過指標陣列 :int *arr[10]
得到函式指標陣列:int (*arr[10])()
#include
int add(int a, int b)
intsub(int a, int b)
int mul(int a, int b)
int div(int a, int b)
int main()
;while (input)
else
printf("操作有誤");
printf("ret=%d\n", ret);
}return
0;}
結果如下:
6、指向函式指標陣列的指標
指標指向乙個陣列,陣列的元素都是函式指標
通過函式指標陣列:int (*arr[10])()
得到函式指標陣列:int (*(*arr)[10])()
完
指標與陣列,指標與函式之間的關係
指標陣列,它的關鍵在於是乙個陣列,即陣列中每個元素都是指標。陣列指標,他的關鍵在於是指標變數,即這個指標指向乙個陣列。include int main 這是乙個陣列,大家都知道。int parr1 4 這是指標陣列,首先的優先順序比 的優先順序高,所以parr 先與結合,它是乙個陣列,然後再與 結合...
指標與陣列之間的關係與轉換
一 指向指標的指標 1 指向指標的指標的定義 p p 變數的位址上的數值的位址 2 指標型別要和你指向的資料或者指標型別要一致 3 指標與一維陣列的取值 a i a i a i p i p i a i a i a代表的是陣列的變數名,i是代表陣列a裡面的第i個元素 是指求括號 a i 的位址 voi...
指標陣列和陣列指標之間關係
指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣列的指標 的簡稱。1 int ptr1 10 2 int...