#include<stdio.h>
#include<malloc.h>
void f(int * p)
{
int * q=(int *)malloc(sizeof(int));
printf("指针Q目前的地址是:%d\n",q);
printf("指针Q目前的值是:%d\n",*q);
* q=5;
printf("指针Q目前的地址是:%d\n",q);
printf("指针Q目前的值是:%d\n",*q);
p=q;
printf("指针P目前的地址是:%d\n",p);
printf("指针P目前的值是:%d\n",*p);
//printf("%d\n",* p);
return;
}
int main(void)
{
int * p=(int *)malloc(sizeof(int));
printf("指针p目前的地址是:%d\n",p);
printf("指针p目前的值是:%d\n",*p);
f(p);
printf("%d\n",* p);
return 0;
}
指针p目前的地址是:3759712
指针p目前的值是:-842150451
指针Q目前的地址是:3748240
指针Q目前的值是:-842150451
指针Q目前的地址是:3748240
指针Q目前的值是:5
指针P目前的地址是:3748240
指针P目前的值是:5
指针p目前的值是:-842150451
太久不能C了,问题在于f(p);p的值传给参数int * p 了,这两个不是一个东西。
#include<stdio.h>
#include<malloc.h>
void f(int * *p)
{
int * q=(int *)malloc(sizeof(int));
printf("指针Q目前的地址是:%d\n",q);
printf("指针Q目前的值是:%d\n",*q);
* q=5;
printf("指针Q目前的地址是:%d\n",q);
printf("指针Q目前的值是:%d\n",*q);
*p=q;
printf("指针P目前的地址是:%d\n",*p);
printf("指针P目前的值是:%d\n",**p);
//printf("%d\n",* p);
return;
}
int main(void)
{
int * p=(int *)malloc(sizeof(int));
printf("指针p目前的地址是:%d\n",p);
printf("指针p目前的值是:%d\n",*p);
f(&p);
printf("指针p目前的值是:%d\n",* p);
return 0;
}
指针p目前的地址是:3759712
指针p目前的值是:-842150451
指针Q目前的地址是:3748240
指针Q目前的值是:-842150451
指针Q目前的地址是:3748240
指针Q目前的值是:5
指针P目前的地址是:3748240
指针P目前的值是:5
指针p目前的值是:5