鱼C论坛

 找回密码
 立即注册
查看: 2607|回复: 3

C 的指向互换问题

[复制链接]
发表于 2013-10-6 11:31:03 | 显示全部楼层 |阅读模式
9鱼币
首先感谢看我问题的各位,如果能帮我解答我再次表示感谢,刚注册的没什么资金悬赏。。。。
刚开始学C,遇到点问题。
直接上

#include<stdio.h>
int main()
{
   void  cha(char*,char*);
   void chx(char*[]);
   char *ch[]={"oooo","xxxx"};
   char *o="zzzz",*p="llll";
   printf("first %s\n",ch[0]);
   printf("first %s\n",ch[1]);
   printf("first %s\n",o);
   printf("first %s\n\n",p);
   cha(o,p);
   chx(ch);

   printf("now %s\n",ch[0]);
   printf("now %s\n",ch[1]);
   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[0];
a[0]=a[1];
a[1]=q;
}
为什么zzzz跟llll没有实现互换,仅仅是将一个指针数组分成了两个单独的指针。。。。。
求解啊。。。。

最佳答案

查看完整内容

当然不会了啊这里 只改变了 a b 和 main函数重的 o p 没什么关系啊 只不过一开始把o的值赋值给a 把p的值赋值给b而已但无论在cha 函数中怎么改变 a b 都是不会改变 o p 的 但是改变*a *b 就会影响*o *p的值这个函数的话 应为把数组名复制给a了 所以这里 对a[0] a[1]操作就相当于上面对 *a *b操作 这样当然 在main函数中输出 ch[0] ch[1]会发生变化了 简而言之 在自定义函数中改变指针的值是不会影响到main函数的 但是改变指 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-6 11:31:04 | 显示全部楼层
当然不会了啊
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[0];
        a[0]=a[1];
        a[1]=q;
}
这个函数的话
应为把数组名复制给a了 所以这里 对a[0] a[1]操作就相当于上面对 *a *b操作 这样当然 在main函数中输出
ch[0]  ch[1]会发生变化了

简而言之 在自定义函数中改变指针的值是不会影响到main函数的 但是改变指针指向的值 如*a 就会影响了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-6 14:20:00 | 显示全部楼层

非常感谢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-7 20:55:24 | 显示全部楼层
慢慢来  最好画内存图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表