c/c++语言开发共享C中的指针(将地址传递给函数)

我正试图解决这个问题。 问题是,*“swap_nums似乎有效,但不是swap_pointers。修复它。”*顺便说一下,我是初学者:)

我相信我可以自己解决这个问题,但问题是我在理解C中的一些编程概念时遇到了一些困难。这里我展示了需要编辑的给定代码。 到目前为止,我将展示我的思维过程。 请注意:我想要一些提示,而不是完整的解决方案。 ?

#include  #include  void swap_nums(int *x, int *y); void swap_pointers (char *x, char *y); int main (int argc, char *argv[]){ int a = 3, b = 4; char *s1, *s2; swap_nums(&a, &b); printf("a is %dn", a); printf("b is %dn", b); s1 = "I should print second"; s2 = "I should print first"; swap_pointers(s1, s2); printf("s1 is %sn", s1); printf("s2 is %sn", s2); return EXIT_SUCCESS; } void swap_nums(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp; } void swap_pointers (char *x, char *y){ char *temp; temp = x; x = y; y = temp; } 

我的思考过程:这是一个我认为应该交换整数变量a和b的程序。 然后它将采用两个声明的字符串并交换它们。

主function:

 int a = 3, b = 4; 

将变量a和b分别分配给3和4。

 char *s1, *s2; 

创建一个字符指针变量(它将保存一个字符的地址)

 swap_nums(&a, &b); 

函数swap_nums正在发生。 我现在就去解释我的思维过程。

 void swap_nums(int *x, int *y){ 

所以我不熟悉将事情传递给函数,如果我在这里错了,有人可以纠正我要说的话吗?

我看到它的方式,我们将&符号指示的a和b的地址传递给函数swap_nums。 但是为什么我们有int * x和int * y? 我在这里有点困惑。 有人可以向我解释这一点吗?

    在C中,所有内容都作为值传递,包括指针。 因此,交换指针的代码会操纵指针副本,使原始文件保持不变。

    为了交换指针,你需要将指针传递给指针,而不仅仅是指针。 当然,在函数内部,你需要添加一个取消引用级别,就像你在swap_numbers

     void swap_pointers (char **x, char **y) { char *temp; temp = *x; *x = *y; *y = temp; } 

    这是一个提示,这有一些问题:

     s1 = "I should print second"; s2 = "I should print first"; 

    什么是s1的类型,什么是“我应该打印第二”? 如何将字符串文字保存到变量?

    指针可以是一个地址,但它仍然通过值传递给函数(就像C中的所有内容)。 要交换两个指针, 您需要指针指针


    这是你想要的:

     #include  int main(void) { char x='s'; char y='o'; char *a = &x; char *b = &y; printf("a is %xn",a); printf("b is %xn",b); printf("swappingn"); swap_pointers(&a,&b); printf("a is %xn",a); printf("b is %xn",b); } void swap_pointers(char **a, char **b) { char *temp; temp = *a; *a = *b; *b = temp; } 

    提示:按价值研究呼叫并通过引用呼叫以清楚地了解您的查询。

    将指针视为另一个变量,我们必须将指向此变量的指针传递给函数swap_pointers()

    这就是我猜你需要的。 基本和充分。

     void swap(char **s1, char **s2){ char *temp=*s1; *s1=*s2; *s2=temp; } int main(){ char *s1="second"; char *s2="first"; swap(&s1,&s2); printf("%s",s1); printf("%s",s2); return 0; } 

    希望这可以帮助。

      以上就是c/c++开发分享C中的指针(将地址传递给函数)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549635.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐