第3个回答 2010-01-26
void ergod(void (*doit)(int)) {
int i;
for (i = 0; i < 10; i++){
doit(i);
}
}
void printA(int a){
printf("a:%d\n",a);
}
void printB(int a){
printf("b:%d\n",a);
}
int main(){
//ergod(printA);
ergod(printB);
return 0;
}
这是一个函数指针的应用
运行时根据你传的不同的函数指针而执行的不同的操作
打印出
b:0
b:1
b:2
b:3
b:4
b:5
b:6
b:7
b:8
b:9
第4个回答 2019-05-04
借用一楼的回答,打印的时候,你可以参照下述打印,可能你就明白了。
int x = 3;
int *p, *q;
p = &x, q = &x;
printf("p=%p,p=%d\n", p, *p);
printf("%d\n", *p++);
printf("p=%p,p=%d\n", p, *p);
printf("-----\n");
printf("%d\n", (*q)++);
printf("%d\n", x);
你打印的结果应该是:
p=某地址,p=3
Q=3
p=某地址+4/8(根据系统位数是4或者8),p=随机值
-----
Q=3
Q=4