C语言问题:这个指针怎么不能进去么

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:31:22
#include <stdio.h>
void fun(char *a,char *b)
{a=b;}
void main()
{
char c1='A',c2='a',*p1,*p2;
p1=&c1;p2=&c2;fun(p1,p2);
printf("%c%c\n",*p1,*p2);
}

为什么c1的值没有改变,输出仍然是Aa呢???

如果我在main打p1=p2;这样又可以改变,为什么呢??

错,是这样的。
你那只是将指针赋值给了他,并没有将指针里的内容赋给他。因此,你必须用一个*取内容操作符。

void fun(char *a,char *b)
{a=b;}

应改为

void fun(char *a,char *b)
{*a=*b;}

你这样试一下,fun(*p1,*p2);这句话改成这样的

#include<stdio.h>
void fun(char **a,char **b)
{
*a=*b;
}
main()
{
char c1='A',c2='a',*p1,*p2;
p1=&c1,p2=&c2;
fun(&p1,&p2);
printf("%c\n%c\n",*p1,*p2);
}

受高人指点

Corner Boy 17:54:19
刚才那个函数是应该那样写的
如果要改变指针指向的内容,使用f(char* p)就好,如果要改变指针本身,要使用f(char** p)

a=b 改成 *a=*b 就ok了

void fun(char *a,char *b)
{*a=*b;}

怎么可能变呢,p1和p2的值也没变啊,你只是把a的值给改变了而已,你看看一楼的,如果你想要输出的是:aa的话,一楼的是对的!指针其实和整数一样,只是它能代表地址而已