#include <stdio.h>
void fun1(int *p)
{
*p = 1;
}
void fun2(void *p)
{
int *q = NULL;
q = (int *)p;
*q = 2;
}
void fun3(int p)
{
int *q = NULL;
q = (int *)p;
*q = 3;
}
int main(void)
{
int i = 0;
int *p = NULL;
p = &i;
printf("Before call fun* i = %d \n", i);
fun1(p);
printf("Called fun1 i = %d \n", i);
fun2((void *)p);
printf("Called fun2 i = %d \n", i);
fun3((int)p);
printf("Called fun3 i = %d \n", i);
return 0;
}
void fun1(int *p)
{
*p = 1;
}
void fun2(void *p)
{
int *q = NULL;
q = (int *)p;
*q = 2;
}
void fun3(int p)
{
int *q = NULL;
q = (int *)p;
*q = 3;
}
int main(void)
{
int i = 0;
int *p = NULL;
p = &i;
printf("Before call fun* i = %d \n", i);
fun1(p);
printf("Called fun1 i = %d \n", i);
fun2((void *)p);
printf("Called fun2 i = %d \n", i);
fun3((int)p);
printf("Called fun3 i = %d \n", i);
return 0;
}
运行结果:
./pointerTest
Before call fun* i = 0
Called fun1 i = 1
Called fun2 i = 2
Called fun3 i = 3