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函数中那个数组,所以成功修改
了
纯手打,第一次回答想赚个积分下载文件,望采纳谢谢