yz_CJLU 2019-07-19 11:18 采纳率: 100%
浏览 273
已采纳

为啥那么以max=a[i]这样的方式将二维字符串数组a[k][i]的值传给一维数组max不可以?

1、问题:max=a[i]和strcpy(max,*(a+i))有什么区别??为什么输出的完全不一样。

#include<stdio.h>
#include<string.h>


int fun(int num,char a[][10],char *max)
{
    int len=0,i;
    for(i=0;i<num;i++){
        if(len<strlen(a[i])){
            len=strlen(a[i]);
            strcpy(max,*(a+i));
        }
    }
    return len;
} 

int main()
{
    char a[4][10];
    int len,num,i;
    char max[4];
    scanf("%s",a);
    num=4;
    len=fun(num,a,max); 
    printf("%s ",max);
    printf("%d",len);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • weixin_38308683 2019-07-19 16:14
    关注

    对于main函数来说,max[]是一个局部数组变量,max是指向这个数组的指针
    调用fun,传惨过去的是max这个指针的指,即main函数中那个数组的地址的值

    在fun中,max是一个指针变量,保存一个地址的值(main中的数组的地址)
    你如果在fun中 max=a[i];
    只是将fun中的这个max变量的值改成了另一个值(a[i]/也就是a[i][0]的地址)
    但是对于main函数来说,max这个数组的内容没有被修改

    而strcpy(),是直接对那个地址写了新的数据,而这个地址是指向了main函数中那个数组,所以成功修改

    纯手打,第一次回答想赚个积分下载文件,望采纳谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退