提供两个办法:
为云阳等地区用户提供了全套网页设计制作服务,及云阳网站建设行业解决方案。主营业务为网站设计、成都网站设计、云阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1.在主调函数中建立数组,将数组指针传给自定义的函数,处理后主调函数中的数组值也就变化了。
void fun(int a[],int n){
........
}//其中a[]就是要输入的数组,n是这个数组的长度。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);
......
}
2.可以在主调函数中建立数组并把首地址和长度传给函数,在函数中创建一个动态数组,处理完后把动态数组的首地址返回主调函数,最后在主调函数中释放动态申请的内存。
int *fun(int a[],int n){
int *p=(int *)malloc(n*sizeof(int));//申请内存.
if(!p){//判断是否申请成功.
printf("failure...");
exit(0);
}
memcpy(p,a,n*sizeof(int));//把主调函数的数组拷贝过来.
......
return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},*ptmp;
ptmp=fun(arry,10);
......
free(ptmp);//释放申请的空间.
}
数组的内容是不能一一传给函数的……
#include stdio.h
#include conio.h
int main (void) {
int i,j;
for (i=0; i4; i++) {
for (j=0; j4; j++) {
if (i==j)
printf ("1 ");
else
printf ("0 ");
}
printf ("\n");
}
getch (); /*屏幕暂留*/
return 0;
}
运行结果
如果一定要用数组,那就先给数组赋值,然后打印数组
#include stdio.h
#include conio.h
int main (void) {
int arr[4][4];
int i,j;
for (i=0; i4; i++)
for (j=0; j4; j++)
arr[i][j] = i==j;
for (i=0; i4; i++){
for (j=0; j4; j++)
printf ("%d ", arr[i][j]);
printf ("\n");
}
getch (); /*屏幕暂留*/
return 0;
}
运行结果
1、函数arrDisp中,for循环之中,不能定义变量,变量应该在函数开头声明。
2、变量j未定义
3、在main函数调用arrDisp函数时,一般是以数组名传递参数。
4、在arrDisp函数中,for循环下的printf函数,应该调用数组a[j]的元素做为输出。
代码如下:
#include stdio.h
void arrDisp(int a[], int n)
{
int j;
for(j=0;jn;j++)
{
printf("%d",a[j]);
if(j%8==0)
printf("\n");
}
}
void main()
{
int n,i;
int a[100];
printf("要输入数的个数为:");
scanf("%d",n);
for(i=0;in;i++)
scanf("%d",a[i]);
arrDisp(a, n);
}
限制在C语言中,利用printf直接输出数组是不可以的。
但是你的做法是可以的。只是问题出在你数组使用越界了。
解释一下:
printf不能直接用来输出数组。
例如:
#includestdio.h
int main(){
int a[3]={1,2,3};
int i;
for(i=0;i3;i++)
printf("%d",a);
}是错误的
所以要是输出数组的话,必须要借助其他的语句输出,要一个一个地输出,例如for语句的循环输出。
例如:
#includestdio.h
int main(){
int a[3]={1,2,3};
int i;
for(i=0;i3;i++)
printf("%d",a[i]);
}但是你这样的做法是可以:
因为你写的a[3][3]实际上已经指定了这个数字在这个二维数组中的横坐标和纵坐标,相当于一个int型的数据。但是不过你数组越界了。
额外引申一下:直接用scanf输入一个数组的量可以么?
#includestdio.h
int
main(){
char
a[3];
scanf("%c",a);
int
i;
for(i=0;i3;i++)
printf("%c",a[i]);
}
这样输入3个字符,只能把输入的第一个字符放进a数组里面。因为a就是这个数组的地址,同时也表示这个数组的第一个。a可以给数组的第一个放进一个字符,但是后面的就无能为力的。
代码均在Devc++测试。