C 的指向互换问题
首先感谢看我问题的各位,如果能帮我解答我再次表示感谢,刚注册的没什么资金悬赏。。。。刚开始学C,遇到点问题。
直接上
#include<stdio.h>
int main()
{
voidcha(char*,char*);
void chx(char*[]);
char *ch[]={"oooo","xxxx"};
char *o="zzzz",*p="llll";
printf("first %s\n",ch);
printf("first %s\n",ch);
printf("first %s\n",o);
printf("first %s\n\n",p);
cha(o,p);
chx(ch);
printf("now %s\n",ch);
printf("now %s\n",ch);
printf("now %s\n",o);
printf("now %s\n",p);
}
void cha(char*a,char*b)
{
char *q;
q=a;
a=b;
b=q;
}
void chx(char*a[])
{
char *q;
q=a;
a=a;
a=q;
}
为什么zzzz跟llll没有实现互换,仅仅是将一个指针数组分成了两个单独的指针。。。。。
求解啊。。。。
当然不会了啊void cha(char*a,char*b)
{
char *q;
q=a;
a=b;
b=q;
}这里 只改变了 a b 和 main函数重的 o p 没什么关系啊 只不过一开始把o的值赋值给a 把p的值赋值给b而已但无论在cha 函数中怎么改变 a b 都是不会改变 o p 的
但是改变*a *b 就会影响*o *p的值void chx(char*a[])
{
char *q;
q=a;
a=a;
a=q;
}这个函数的话
应为把数组名复制给a了 所以这里 对a a操作就相当于上面对 *a *b操作 这样当然 在main函数中输出
chch会发生变化了
简而言之 在自定义函数中改变指针的值是不会影响到main函数的 但是改变指针指向的值 如*a 就会影响了 牡丹花下死做鬼 发表于 2013-10-6 11:31 static/image/common/back.gif
当然不会了啊这里 只改变了 a b 和 main函数重的 o p 没什么关系啊 只不过一开始把o的值赋值给a 把p的值赋值 ...
非常感谢。。 慢慢来最好画内存图
页:
[1]