char (*p)[20];
sizeof(p) = 8
sizeof(p[0]) = 20
sizeof(p[1]) = 20
sizeof(*p) = 20
p = malloc(sizeof(*p));
strcpy(*p, "Kenneth Kuan");
*p = Kenneth Kuan
char *p1;
p1 = (char*) malloc(sizeof(char)*20);
sizeof(p1) = 8
sizeof(*p1) = 1
sizeof(p1[0]) = 1
sizeof(p1[1]) = 1
char p2[20];
sizeof(p2) = 20
sizeof(*p2) = 1
char *p3[20];
sizeof(p3) = 160
sizeof(*p3) = 8
sizeof(p3[0]) = 8
每個函式名稱都是指向該函式的指標,當你建立名為 go_to_warp_speed(int speed)的函式時,你同時也建立了稱作 go_to_wrap_speed的指標變數。
建立函式指標:
int (*warp_fn)(int);
warp_fn = go_to_warp_speed;
warp_fn(4);
warp_fn(4); 跟呼叫 go_to_warp_speed(4)一樣。
在建立函式指標時,記得要指定回傳值型別和接受的參數。
enum response_type {DUMP, SECOND_CHANCE, MARRIAGE);
typedef struct {
char *name;
enum response_type type;
}
建立函式指標陣列:
void (*replies[])(response) = {dump, second_chance, marriage};
replies[DUMP] == dump
replies[DUMP]等同於dump函式的名稱
沒有留言:
張貼留言