鱼C论坛

 找回密码
 立即注册
查看: 2156|回复: 6

这个程序哪里有问题呢?编译无法通过

[复制链接]
发表于 2023-4-12 12:42:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个程序哪里有问题呢?编译无法通过
在void changePerson(struct Person *person)修改函数中 if(strcmp(temp->name, n) == 0)有问题
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. struct Person
  5. {
  6.     char name[40];
  7.     char phone[20];
  8.     struct Person *next;
  9. };
  10. void welcome();
  11. void getInput(struct Person *person);
  12. void insertPerson(struct Person **person);
  13. void printPerson(struct Person *person);
  14. void findPerson(struct Person *person);
  15. void changePerson(struct Person *person);
  16. void delPerson(struct Person *person);
  17. void displayContacts(struct Person *contacts);
  18. void releasePerson(struct Person **person);

  19. void getInput(struct Person *person)
  20. {
  21.         printf("请输入姓名:");
  22.         scanf("%s",person->name);
  23.         printf("请输入电话:");
  24.         scanf("%s",person->phone);

  25. }
  26. void insertPerson(struct Person **person)
  27. {
  28.         struct Person *add, *temp;
  29.         add = (struct Person*)malloc(sizeof(struct Person));
  30.        
  31.         if(add == NULL) // 判断内存分配是否成功
  32.     {
  33.         printf("内存分配失败了!\n");
  34.         exit(1);   
  35.     }
  36.     getInput(add);
  37.     if(*person == NULL)
  38.     {
  39.             *person = add;
  40.             add->next = NULL;
  41.         }
  42.     else
  43.     {
  44.             temp = *person;
  45.             *person = add; //为什么这里要有这句 因为下次main循环进来 不会执行
  46.                                             //条件为*person == NULL判断语句  *person就没有指向add的地址
  47.             add->next = temp;
  48.         }
  49. }

  50. void printPerson(struct Person *person)
  51. {
  52.         printf("联系人:%s\n", person->name);
  53.         printf("电话:%s\n", person->phone);
  54. }

  55. void findPerson(struct Person *person)
  56. {
  57.         struct Person *temp = person;
  58.         char n[128];
  59.         printf("请输入待查找联系人:");
  60.         scanf("%s",n);
  61.        
  62.         while(temp)
  63.         {
  64.                 if(strcmp(temp->name, n) == 0)
  65.                 {
  66.                         printPerson(temp);
  67.                 }
  68.                 temp = temp->next;
  69.                
  70.        
  71.         }
  72. }

  73. void changePerson(struct Person *person) //和答案有区别 这里代码臃肿了  本身可以调用查找函数再修改  这里的修改函数里又做了一次查找代码
  74. {
  75.         struct Person *temp = person;
  76.         char n[128];
  77.         printf("请输入待修改联系人:");
  78.         scanf("%s",n);

  79.         while(temp)
  80.         {
  81.                 if(strcmp(temp->name, n) == 0)
  82.                 {
  83.                
  84.                         printf("请输入%s新的电话:",temp->name);
  85.                         scanf("%s",temp->phone);

  86.                 }
  87.                 temp = temp->next;
  88.         }
  89. }

  90. void delPerson(struct Person *person)
  91. {
  92.         struct Person *temp = person;
  93.         struct Person *cur = person;
  94.         char n[128];
  95.         printf("请输入待修改联系人:");
  96.         scanf("%s",n);
  97.         while(temp)
  98.         {
  99.                 int n = 1;
  100.                 if(strcmp(temp->name, n) == 0)
  101.                 {
  102.                         if(n == 1)
  103.                         {
  104.                                 temp = NULL;
  105.                                 cur->next = temp->next;
  106.                         }
  107.                         else
  108.                         {
  109.                                 cur->next = temp->next;
  110.                         }
  111.                 }
  112.                 cur = temp;
  113.                 temp = temp->next;
  114.                 n++;
  115.         }
  116. }

  117. void displayPerson(struct Person *person)
  118. {
  119.         struct Person *current;
  120.    
  121.         current = person;
  122.         while (current != NULL)
  123.         {
  124.                 printPerson(current);
  125.                 current = current->next;
  126.         }
  127. }

  128. void releasePerson(struct Person **person)
  129. {
  130.         struct Person *temp;
  131.    
  132.         while (*person != NULL)
  133.         {
  134.                 temp = *person;
  135.                 *person = (*person)->next;
  136.                 free(temp);
  137.         }
  138. }

  139. void welcome()
  140. {
  141.         printf("| 欢迎使用通讯录管理程序 |");
  142.         printf("|--- 1:插入新的联系人 ---|");
  143.         printf("|--- 2:查找已有联系人 ---|");
  144.         printf("|--- 3:更改已有联系人 ---|");
  145.         printf("|--- 4:删除已有联系人 ---|");
  146.         printf("|--- 5:显示当前通讯录 ---|");
  147.         printf("|--- 6:退出通讯录程序 ---|");
  148.         printf("|---  Powered by Psy  ---|");
  149.          
  150. }

  151. int main(void)
  152. {
  153.         welcome();
  154.         struct Person *person = NULL;
  155.         struct Person *temp;

  156.         while(1)
  157.         {
  158.                 int n;
  159.                 printf("请输入指令代码:");
  160.                 scanf("%d",&n);       
  161.                 if(n > 6 && n < 1)
  162.                 {
  163.                         printf("输入有误!");
  164.                         continue;
  165.                 }
  166.                 else
  167.                 {
  168.                         switch(n)
  169.                         {
  170.                                 case 1:insertPerson(&person);break;
  171.                                 case 2:findPerson(person);break;
  172.                                 case 3:changePerson(person);break;
  173.                                 case 4:delPerson(person);break;
  174.                                 case 5:displayPerson(person);break;
  175.                                 case 6:goto END;
  176.                         }
  177.                 }
  178.         }

  179.         END:
  180.         releasePerson(&person);
  181.    
  182.       
  183.         return 0;
  184. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-12 12:46:44 | 显示全部楼层
找到问题了,怎么删贴。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 12:50:40 | 显示全部楼层
您好!在您的代码中,我发现了一个问题:在 delPerson 函数中,您在 if 语句中将 strcmp 函数的返回值与整数进行了比较,这是错误的。

您应该将 n 变量的声明修改为其他名称,如 index,以避免与输入名称冲突。请参阅修改后的代码片段:

  1. void delPerson(struct Person *person)
  2. {
  3.     struct Person *temp = person;
  4.     struct Person *cur = person;
  5.     char n[128];
  6.     printf("请输入待删除联系人:");
  7.     scanf("%s",n);
  8.     int index = 1;
  9.     while(temp)
  10.     {
  11.         if(strcmp(temp->name, n) == 0)
  12.         {
  13.             if(index == 1)
  14.             {
  15.                 temp = NULL;
  16.                 cur->next = temp->next;
  17.             }
  18.             else
  19.             {
  20.                 cur->next = temp->next;
  21.             }
  22.         }
  23.         cur = temp;
  24.         temp = temp->next;
  25.         index++;
  26.     }
  27. }
复制代码


另外,在 delPerson 函数中,您将 temp 设置为 NULL,然后尝试访问 temp->next,这是不正确的。

在删除 Person 结构时,您需要确保正确地更新链表。以下是修改后的 delPerson 函数:

  1. void delPerson(struct Person **person)
  2. {
  3.     struct Person *temp = *person;
  4.     struct Person *prev = NULL;
  5.     char n[128];
  6.     printf("请输入待删除联系人:");
  7.     scanf("%s",n);

  8.     while(temp)
  9.     {
  10.         if(strcmp(temp->name, n) == 0)
  11.         {
  12.             if(prev == NULL)
  13.             {
  14.                 *person = temp->next;
  15.             }
  16.             else
  17.             {
  18.                 prev->next = temp->next;
  19.             }
  20.             free(temp);
  21.             return;
  22.         }
  23.         prev = temp;
  24.         temp = temp->next;
  25.     }
  26. }
复制代码


请注意,我将 delPerson 函数的参数更改为指向 Person 结构指针的指针,以便在删除第一个元素时能够更新 person。

在 main 函数中,调用 delPerson 时需要将参数更改为 &person:

  1. case 4:delPerson(&person);break;
复制代码


这样,您的程序应该可以正常编译和运行了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 13:35:45 | 显示全部楼层
修改后的代码:
问题1:输入指令为A B C等字符的时候会出去一直打印刷屏
问题2:在void insertPerson(struct Person **person)函数中 为什么要定义一个struct Person类型的add 给add分配内存空间 不能直接对*person操作吗? 直接对它进行分配内存空间再进行每个节点的赋值
问题3:void insertPerson(struct Person **person)和void delPerson(struct Person **person)中 为什么参数都是指针的指针 你说以便在删除第一个元素时能够更新 person  但是我还是有点不明白  是传进去地址是指针的地址 而不是头节点的地址吗?  对删除第一个元素有什么帮助呢? 能详细讲解一下思路逻辑吗?
问题4:最后释放内存的函数void releasePerson(struct Person **person)释放掉了每一个节点的内存   如果只释放头节点 比如1->2->3 释放掉1的内存空间后 链表还会以2->3存在吗? 2是否是变成了头节点了?
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. struct Person
  5. {
  6.     char name[40];
  7.     char phone[20];
  8.     struct Person *next;
  9. };
  10. void welcome();
  11. void getInput(struct Person *person);
  12. void insertPerson(struct Person **person);
  13. void printPerson(struct Person *person);
  14. void findPerson(struct Person *person);
  15. void changePerson(struct Person *person);
  16. void delPerson(struct Person **person);
  17. void displayContacts(struct Person *contacts);
  18. void releasePerson(struct Person **person);

  19. void getInput(struct Person *person)
  20. {
  21.         printf("请输入姓名:");
  22.         scanf("%s",person->name);
  23.         printf("请输入电话:");
  24.         scanf("%s",person->phone);

  25. }
  26. void insertPerson(struct Person **person)
  27. {
  28.         struct Person *add, *temp;
  29.         add = (struct Person*)malloc(sizeof(struct Person));
  30.        
  31.         if(add == NULL) // 判断内存分配是否成功
  32.     {
  33.         printf("内存分配失败了!\n");
  34.         exit(1);   
  35.     }
  36.     getInput(add);
  37.     if(*person == NULL)
  38.     {
  39.             *person = add;
  40.             add->next = NULL;
  41.         }
  42.     else
  43.     {
  44.             temp = *person;
  45.             *person = add; //为什么这里要有这句 因为下次main循环进来 不会执行
  46.                                             //条件为*person == NULL判断语句  *person就没有指向add的地址
  47.             add->next = temp;
  48.         }
  49. }

  50. void printPerson(struct Person *person)
  51. {
  52.         printf("联系人:%s\n", person->name);
  53.         printf("电话:%s\n", person->phone);
  54. }

  55. void findPerson(struct Person *person)
  56. {
  57.         struct Person *temp = person;
  58.         char n[128];
  59.         printf("请输入待查找联系人:");
  60.         scanf("%s",n);
  61.        
  62.         while(temp)
  63.         {
  64.                 if(strcmp(temp->name, n) == 0)
  65.                 {
  66.                         printPerson(temp);
  67.                 }
  68.                 temp = temp->next;
  69.                
  70.        
  71.         }
  72. }

  73. void changePerson(struct Person *person) //和答案有区别 这里代码臃肿了  本身可以调用查找函数再修改  这里的修改函数里又做了一次查找代码
  74. {
  75.         struct Person *temp = person;
  76.         char n[128];
  77.         printf("请输入待修改联系人:");
  78.         scanf("%s",n);

  79.         while(temp)
  80.         {
  81.                 if(strcmp(temp->name, n) == 0)
  82.                 {
  83.                
  84.                         printf("请输入%s新的电话:",temp->name);
  85.                         scanf("%s",temp->phone);
  86.                         return;
  87.                 }
  88.                 temp = temp->next;
  89.         }
  90.         printf("未能找到联系人%s!\n",n);
  91. }

  92. void delPerson(struct Person **person)
  93. {
  94.     struct Person *temp = *person;
  95.     struct Person *prev = NULL;
  96.     char n[128];
  97.     printf("请输入待删除联系人:");
  98.     scanf("%s",n);

  99.     while(temp)
  100.     {
  101.         if(strcmp(temp->name, n) == 0)
  102.         {
  103.             if(prev == NULL)//判断是不是第一次循环 第一次循环时prev才会==NULL
  104.             {
  105.                 *person = temp->next;//这里直接对*person修改 因为要删除的是第一个节点
  106.             }
  107.             else//不是第一次循环(此时的temp不在第一个节点)
  108.             {
  109.                 prev->next = temp->next;
  110.             }
  111.             free(temp);
  112.             printf("已删除联系人%s!\n",n);
  113.             return;
  114.         }
  115.         prev = temp;
  116.         temp = temp->next;
  117.     }
  118.     printf("未能找到联系人%s!\n",n);
  119. }


  120. void displayPerson(struct Person *person)
  121. {
  122.         struct Person *current;
  123.    
  124.         current = person;
  125.         while (current != NULL)
  126.         {
  127.                 printPerson(current);
  128.                 current = current->next;
  129.         }
  130. }

  131. void releasePerson(struct Person **person)
  132. {
  133.         struct Person *temp;
  134.    
  135.         while (*person != NULL)
  136.         {
  137.                 temp = *person;
  138.                 *person = (*person)->next;
  139.                 free(temp);
  140.         }
  141. }

  142. void welcome()
  143. {
  144.         printf("| 欢迎使用通讯录管理程序 |\n");
  145.         printf("|--- 1:插入新的联系人 ---|\n");
  146.         printf("|--- 2:查找已有联系人 ---|\n");
  147.         printf("|--- 3:更改已有联系人 ---|\n");
  148.         printf("|--- 4:删除已有联系人 ---|\n");
  149.         printf("|--- 5:显示当前通讯录 ---|\n");
  150.         printf("|--- 6:退出通讯录程序 ---|\n");
  151.         printf("|---  Powered by Psy  ---|\n");
  152.          
  153. }

  154. int main(void)
  155. {
  156.         welcome();
  157.         struct Person *person = NULL;
  158.         struct Person *temp;

  159.         while(1)
  160.         {
  161.                 int n;
  162.                 printf("请输入指令代码:");
  163.                 scanf("%d",&n);       
  164.                 if(n > 6 || n < 1)
  165.                 {
  166.                         printf("输入有误!");
  167.                         continue;
  168.                 }
  169.                 else
  170.                 {
  171.                         switch(n)
  172.                         {
  173.                                 case 1:insertPerson(&person);break;
  174.                                 case 2:findPerson(person);break;
  175.                                 case 3:changePerson(person);break;
  176.                                 case 4:delPerson(&person);break;
  177.                                 case 5:displayPerson(person);break;
  178.                                 case 6:goto END;
  179.                         }
  180.                 }
  181.                 printf("\n\n");
  182.         }

  183.         END:
  184.         releasePerson(&person);
  185.    
  186.       
  187.         return 0;
  188. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 14:07:13 | 显示全部楼层
isdkz 发表于 2023-4-12 12:50
您好!在您的代码中,我发现了一个问题:在 delPerson 函数中,您在 if 语句中将 strcmp 函数的返回值与整 ...

修改后的代码:
问题1:输入指令为A B C等字符的时候会出去一直打印刷屏
问题2:在void insertPerson(struct Person **person)函数中 为什么要定义一个struct Person类型的add 给add分配内存空间 不能直接对*person操作吗? 直接对它进行分配内存空间再进行每个节点的赋值
问题3:void insertPerson(struct Person **person)和void delPerson(struct Person **person)中 为什么参数都是指针的指针 你说以便在删除第一个元素时能够更新 person  但是我还是有点不明白  是传进去地址是指针的地址 而不是头节点的地址吗?  对删除第一个元素有什么帮助呢? 能详细讲解一下思路逻辑吗?
问题4:最后释放内存的函数void releasePerson(struct Person **person)释放掉了每一个节点的内存   如果只释放头节点 比如1->2->3 释放掉1的内存空间后 链表还会以2->3存在吗? 2是否是变成了头节点了?
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. struct Person
  5. {
  6.     char name[40];
  7.     char phone[20];
  8.     struct Person *next;
  9. };
  10. void welcome();
  11. void getInput(struct Person *person);
  12. void insertPerson(struct Person **person);
  13. void printPerson(struct Person *person);
  14. void findPerson(struct Person *person);
  15. void changePerson(struct Person *person);
  16. void delPerson(struct Person **person);
  17. void displayContacts(struct Person *contacts);
  18. void releasePerson(struct Person **person);

  19. void getInput(struct Person *person)
  20. {
  21.         printf("请输入姓名:");
  22.         scanf("%s",person->name);
  23.         printf("请输入电话:");
  24.         scanf("%s",person->phone);

  25. }
  26. void insertPerson(struct Person **person)
  27. {
  28.         struct Person *add, *temp;
  29.         add = (struct Person*)malloc(sizeof(struct Person));
  30.         
  31.         if(add == NULL) // 判断内存分配是否成功
  32.     {
  33.         printf("内存分配失败了!\n");
  34.         exit(1);   
  35.     }
  36.     getInput(add);
  37.     if(*person == NULL)
  38.     {
  39.             *person = add;
  40.             add->next = NULL;
  41.         }
  42.     else
  43.     {
  44.             temp = *person;
  45.             *person = add; //为什么这里要有这句 因为下次main循环进来 不会执行
  46.                                             //条件为*person == NULL判断语句  *person就没有指向add的地址
  47.             add->next = temp;
  48.         }
  49. }

  50. void printPerson(struct Person *person)
  51. {
  52.         printf("联系人:%s\n", person->name);
  53.         printf("电话:%s\n", person->phone);
  54. }

  55. void findPerson(struct Person *person)
  56. {
  57.         struct Person *temp = person;
  58.         char n[128];
  59.         printf("请输入待查找联系人:");
  60.         scanf("%s",n);
  61.         
  62.         while(temp)
  63.         {
  64.                 if(strcmp(temp->name, n) == 0)
  65.                 {
  66.                         printPerson(temp);
  67.                 }
  68.                 temp = temp->next;
  69.                
  70.         
  71.         }
  72. }

  73. void changePerson(struct Person *person) //和答案有区别 这里代码臃肿了  本身可以调用查找函数再修改  这里的修改函数里又做了一次查找代码
  74. {
  75.         struct Person *temp = person;
  76.         char n[128];
  77.         printf("请输入待修改联系人:");
  78.         scanf("%s",n);

  79.         while(temp)
  80.         {
  81.                 if(strcmp(temp->name, n) == 0)
  82.                 {
  83.                
  84.                         printf("请输入%s新的电话:",temp->name);
  85.                         scanf("%s",temp->phone);
  86.                         return;
  87.                 }
  88.                 temp = temp->next;
  89.         }
  90.         printf("未能找到联系人%s!\n",n);
  91. }

  92. void delPerson(struct Person **person)
  93. {
  94.     struct Person *temp = *person;
  95.     struct Person *prev = NULL;
  96.     char n[128];
  97.     printf("请输入待删除联系人:");
  98.     scanf("%s",n);

  99.     while(temp)
  100.     {
  101.         if(strcmp(temp->name, n) == 0)
  102.         {
  103.             if(prev == NULL)//判断是不是第一次循环 第一次循环时prev才会==NULL
  104.             {
  105.                 *person = temp->next;//这里直接对*person修改 因为要删除的是第一个节点
  106.             }
  107.             else//不是第一次循环(此时的temp不在第一个节点)
  108.             {
  109.                 prev->next = temp->next;
  110.             }
  111.             free(temp);
  112.             printf("已删除联系人%s!\n",n);
  113.             return;
  114.         }
  115.         prev = temp;
  116.         temp = temp->next;
  117.     }
  118.     printf("未能找到联系人%s!\n",n);
  119. }


  120. void displayPerson(struct Person *person)
  121. {
  122.         struct Person *current;
  123.    
  124.         current = person;
  125.         while (current != NULL)
  126.         {
  127.                 printPerson(current);
  128.                 current = current->next;
  129.         }
  130. }

  131. void releasePerson(struct Person **person)
  132. {
  133.         struct Person *temp;
  134.    
  135.         while (*person != NULL)
  136.         {
  137.                 temp = *person;
  138.                 *person = (*person)->next;
  139.                 free(temp);
  140.         }
  141. }

  142. void welcome()
  143. {
  144.         printf("| 欢迎使用通讯录管理程序 |\n");
  145.         printf("|--- 1:插入新的联系人 ---|\n");
  146.         printf("|--- 2:查找已有联系人 ---|\n");
  147.         printf("|--- 3:更改已有联系人 ---|\n");
  148.         printf("|--- 4:删除已有联系人 ---|\n");
  149.         printf("|--- 5:显示当前通讯录 ---|\n");
  150.         printf("|--- 6:退出通讯录程序 ---|\n");
  151.         printf("|---  Powered by Psy  ---|\n");
  152.          
  153. }

  154. int main(void)
  155. {
  156.         welcome();
  157.         struct Person *person = NULL;
  158.         struct Person *temp;

  159.         while(1)
  160.         {
  161.                 int n;
  162.                 printf("请输入指令代码:");
  163.                 scanf("%d",&n);        
  164.                 if(n > 6 || n < 1)
  165.                 {
  166.                         printf("输入有误!");
  167.                         continue;
  168.                 }
  169.                 else
  170.                 {
  171.                         switch(n)
  172.                         {
  173.                                 case 1:insertPerson(&person);break;
  174.                                 case 2:findPerson(person);break;
  175.                                 case 3:changePerson(person);break;
  176.                                 case 4:delPerson(&person);break;
  177.                                 case 5:displayPerson(person);break;
  178.                                 case 6:goto END;
  179.                         }
  180.                 }
  181.                 printf("\n\n");
  182.         }

  183.         END:
  184.         releasePerson(&person);
  185.    
  186.       
  187.         return 0;
  188. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-12 14:10:56 | 显示全部楼层
a905448839 发表于 2023-4-12 14:07
修改后的代码:
问题1:输入指令为A B C等字符的时候会出去一直打印刷屏
问题2:在void insertPerson(s ...

问题1:
当输入指令为A、B、C等字符时,会导致程序无法正确读取输入的指令代码。在这种情况下,我们可以修改main()函数中的输入读取部分,改为读取一行输入,并使用sscanf尝试将输入解析为整数。如果解析成功,则继续执行指令;否则,提示输入有误并继续循环。

问题2:
在void insertPerson(struct Person **person)函数中,定义一个struct Person类型的add并为其分配内存空间的原因是:我们需要为新插入的联系人分配一个独立的内存空间,以便在链表中正确存储联系人信息。如果直接对*person进行操作,那么在插入多个联系人时,所有联系人将共享相同的内存空间,导致数据混乱。

问题3:
在void insertPerson(struct Person **person)和void delPerson(struct Person **person)函数中,参数都是指针的指针,因为这样可以在删除第一个元素时,更新person指向新的头结点。如果仅传递指针,函数将获得指针的副本,因此在函数内部对指针进行的任何更改都不会影响到原始指针。通过传递指针的指针,函数可以直接修改原始指针,从而实现更新头结点的目的。

问题4:
在void releasePerson(struct Person **person)函数中,确实释放了每个节点的内存。如果只释放头节点,链表会继续以2->3存在,而且2会成为新的头节点。然而,由于1的内存已经被释放,链表的状态将是未定义的,可能导致程序崩溃或其他错误。因此,释放整个链表时,应确保逐个释放所有节点。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-12 14:34:21 | 显示全部楼层
isdkz 发表于 2023-4-12 14:10
问题1:
当输入指令为A、B、C等字符时,会导致程序无法正确读取输入的指令代码。在这种情况下,我们可以 ...

问题3还能详细讲解下吗?举个例子行吗?我比较笨。。。不太能理解  为什么传递指针进去不能修改原指针呢指向的这个链表呢?如果传递指针 函数里的指针和main函数的指针是什么关系呢?如果传递指针的指针 函数里的指针和main函数的指针是什么关系呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 23:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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