#include
#include
typedef struct t_ooxx
t_ooxx, *pt_ooxx;
//測試陣列指標
void test_ooxx_arrayp(t_ooxx (*p), int num)
//測試指標陣列
void test_ooxx_parray(t_ooxx **p, int num)
//測試函式指標
char *test_ooxxfp(void)
//測試指標函式變數
double (*test_ooxxpf)(t_ooxx *p, int num); //定義乙個指標函式變數
typedef double (*test_ooxxpf_type)(t_ooxx *p, int num); //宣告指標函式型別
/* 定義乙個與指標函式相同形式的測試函式(一般為處理函式) */
double ****_fhandle(t_ooxx *p, int num)
//測試指標函式作為引數
//void * test_ooxx(double (*p)(t_ooxx *ooxx, int num) , int num)
void * test_ooxx_pm(test_ooxxpf_type p, int num) //也可以這樣使用 宣告的指標函式型別
;p(&ooxx, 9); //草做,執行函式
printf("testing parameter is pf.\n");
} int main()
;char *ip = "192.168.1.1";
/* 1 陣列指標 */
t_ooxx (*ooxx)[9] = null;
/* if use malloc, sample...*/
ooxx = (t_ooxx (*))malloc( 1 * sizeof(t_ooxx)); //指標使用前,要確保指向合法位址
free(ooxx);
/* 一維陣列,與二維陣列的測試 */
#if 1
t_ooxx testap[9] =
};ooxx = testap; //即&testap[0]
#else
t_ooxx testap[9]; //testap[3], error 要指向的陣列包含9個元素
testap[0].ip = ip;
testap[0].w = 12;
testap[0].h = 34;
ooxx = &testap; //取陣列的位址
#endif
test_ooxx_arrayp(ooxx, sizeof(ooxx) / sizeof(ooxx[0]));
/* 2 指標陣列 */
t_ooxx *ooxx2[9] = ;
t_ooxx testpa = ;
ooxx2[0] = &testpa; //陣列裡面存放指標的位址
test_ooxx_parray(ooxx2, 9);
/* 3 函式指標 */
char *t;
t = test_ooxxfp();
printf("the answer is %s\n", t);
/*4 指標函式*/
/*4.1 給指標函式變數賦值 */
test_ooxxpf = ****_fhandle; // or test_ooxxpf = &****_fhandle;
/*4.2 指標函式變數作為引數*/
test_ooxx_pm(****_fhandle, 9); //
test_ooxx(test_ooxxpf, 9);
return 0;
}
指標與陣列與函式指標
變數的本質是一段儲存空間的別名,指標的本質是一種特殊型別的變數,這種變數的儲存空間中儲存的是另乙個變數的位址。號的意義 號代表所申明的變數是指標 號表示取指標所指向記憶體空間的值。該使用傳值呼叫還是傳址呼叫 當函式內部需要改變實參的值,則需要使用傳址呼叫 如果函式需要傳入的引數型別複雜,體積巨大,又...
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個整型資料的長度。如要將二維陣列賦給一指標,應這樣...