为啥那么以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个回答

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

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

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

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

yz_CJLU
yz_CJLU 哦哦,明白了,多谢!
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

3
C++字符串数组中的字符串长度与int数组内的数字比较之间的问题
2
1042 字符统计 只有一个案例不通过 map与array的使用
1
643. 子数组最大平均数 I(C++)
4
C语言 显示字符串中的字符无效,调试了也不清楚哪儿的问题
2
新人求解为什么输出不对?
1
定序列A={A1,A2,...,An}, 要求改变序列A中的某些元素,形成一个严格单调的序列B
5
c语言,输入6个字符串,求最大串和最小串
1
想知道这个程序输入在怎样的字符串后,可以结束输入执行程序。
1
查找其中的最大字母,在该字母后面插入字符串“(max)”,C语言编写代码的做法
1
已知整型数组int a[]={12,5,9,19,22,-4,66,-17,28,13}。
0
二字符数组的匹配判断的算法,利用C语言的程序的设计的原则的计算方式
0
最长对称子字符串:暴力求解错误
1
用C语言如何解决:对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串
3
动态内存的二维数组,随机赋值时行大于列即出错,反之无问题
0
运用C语言编程输入字母,存在多个最大的字母,就在每一个最大字母后面都插入"(max)"
0
字符串运用的查找最大元素,怎么采用C语言的程序代码编写的过程的方式去实现
0
为什么k的值会被修改?
1
django DRF 模型类数据类型有没有变长字符串?
2
请教各位大神:一种新的数组排序,初测速度是快速排序的50倍,有无市场价值,时间复杂度能计算出来吗?
2
星号的作用,求解答 *re