十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#includestdio.h
创新互联专注于海沧企业网站建设,成都响应式网站建设公司,商城网站制作。海沧网站建设公司,为海沧等地区提供建站服务。全流程按需定制制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
int proc(int m,int a[ ])
{
int i,n=0;
for(i=1;i=m;i++)
if(i%7==0 || i%11==0) a[n++]=i; printf("%d\n",n);
return n;
}
int main()
{
int m,n,i,s[100]={0};
scanf("%d",m);
n=proc(m,s);
for(i=0;in;i++)
printf("%d,",s[i]);
return 0;
}
分两种,一种是按值传递,一种是按地址传递,
按值传递就是在子函数中开辟出一个临时内存空间,将传递的数值保存在这个空间中,当子函数结束后,这个内存空间就会释放了!
按地址传递则是把主函数开辟的某个内存空间首地址传递给子函数,子函数可以直接读写主函数上这段内存空间,当子函数结束后,这部分空间不会被释放,主函数将继续使用这段空间!
1.proc函数种少了一对括号: for(j=i;j3;j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
2.这个函数是值传递,没有输出,不能实现目的,2中改进办法:1用指针传递。2把输出循环放入proc函数中.
#includestdio.h
void proc(int a[3][3])
{
int t,i,j;
for(i=0;i3;i++)
for(j=i;j3;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for(i=0;i3;i++)
{for(j=0;j3;j++)
printf("%7d",a[i][j]);
printf("\n");}
}
void main()
{
int arr[3][3]={{1,1,1},{4,4,4},{7,7,7}};
proc(arr);
}
char out[]="";和char out[4];只有数组大小的区别。
其实这两个程序都是有问题的。在使用strcat函数连接字符串时,必须要保证连接后的目标字符串不发生“越界”。
char out[]="";相当于char out[1]='\0',
char out[4];用于存放字符串时,最多允许存放3个字符的字符串,否则就会造成“越界”,造成的后果是不能预料的。出现图一中的情况,可能是还有别的程序语句起了作用的缘故吧。
要正确实现预料的上述程序效果,至少应该设定char out[7];(实际可以适当略大一点)