函數指針的返回值是指針數組,數組裏放的是int;函數指針的返回值是指針數組,數組裏放的是int指針
阿新 • • 發佈:2018-06-12
main 指針數組 malloc eof lib 參數 print oid 括號
函數指針的返回值是指針數組,數組裏放的是int
函數指針的返回值是指針數組,數組裏放的是int指針
#include <stdio.h>
#include <stdlib.h>
void fun(int a){
printf("fun:%d\n", a);
}
void fun1(void (*f)(int),int a){
f(a);
}
int gun(int a){
printf("gun:%d\n", a);
}
int gun1(int a, int(*f)(int)){
printf("gun1:%d\n", a);
}
int (*hun(int a))[]{
int (*p)[3] = (int(*)[3])malloc(sizeof(int[3]) * 2);
(*p)[0] = a+1;
//p[0][0] = a+1;
p[0][1] = a+2;
p[0][2] = a+3;
(*(p+1))[0] = a+11;
//下面寫法是錯誤的,p+1兩側必須加括號
//(*p+1)[0] = a+11;
p[1][1] = a+22;
(*(p+1))[2] = a+33;
return p;
}
int *(*hun1(int a))[]{
int* (*p)[3] = (int*(*)[3])malloc(sizeof (int*[3]) * 2);
int *w1 = (int*)malloc(sizeof(int));
*w1 = 10+a;
int *w2 = (int*)malloc(sizeof(int));
*w2 = 20+a;
int *w3 = (int*)malloc(sizeof(int));
*w3 = 30+a;
int *w4 = (int*)malloc(sizeof(int));
*w4 = 40+a;
int *w5 = (int*)malloc(sizeof(int));
*w5 = 50+a;
int *w6 = (int*)malloc(sizeof (int));
*w6 = 60+a;
(*p)[0] = w1;
p[0][1] = w2;
p[0][2] = w3;
(*(p+1))[0] = w4;
p[1][1] = w5;
(*(p+1))[2] = w6;
return p;
}
int main(){
//指針數組,數組裏是函數指針,指向的函數沒有返回值,1個int參數
void (*a[1])(int);
a[0] = &fun;
(*a[0])(1);
//指針數組,數組裏是函數指針,指向的函數沒有返回值,2個參數。第一個參數是函數指針,指向的函數沒有返回值,1個int參數;第二個參數是int
void (*b[1])(void(*)(int),int);
b[0] = &fun1;
(*b[0])(a[0],10);
//指針數組,數組裏是函數指針,指向的函數的返回值是int,1個int參數
int (*c[1])(int);
c[0] = &gun;
(*c[0])(3);
//指針數組,數組裏是函數指針,指向的函數的返回值是int,2個參數。第一個參數是int;第二個參數是函數指針,指向的函數的返回值是int,1個int參數。
int(*d[1])(int, int(*)(int));
d[0] = &gun1;
(*d[0])(120,c[0]);
//指針數組,數組裏是函數指針,指向的函數的返回值是數組指針,數組裏是int,1個int參數。
int (*(*e[1])(int))[];
e[0] = &hun;
int (*p)[3] = (*e[0])(3);
for(int i = 0; i < 2; ++i){
for(int j = 0; j < 3; ++j){
printf("%d ", p[i][j]);
}
printf("\n");
}
free(p);
//指針數組,數組裏是函數指針,指向的函數的返回值是數組指針,數組裏是int指針,1個int參數。
int *(*(*g[1])(int))[];
g[0] = &hun1;
int* (*p1)[3] = (*g[0])(10);
for(int i = 0; i < 2; ++i){
for(int j = 0; j < 3; ++j){
printf("%d ", *p1[i][j]);
}
printf("\n");
}
free(p1);
}
函數指針的返回值是指針數組,數組裏放的是int;函數指針的返回值是指針數組,數組裏放的是int指針