为啥那么以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;
}

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

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

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

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