c语言,用printf输出一维数组的语句是printf ("%s", a),具体输出一维数组的操作步骤如下:
1、首先我们打开Visual Studio 2010软件,新建一个项目。
2、然后我们按照图示代码输入包含程序需要用到的头文件。
3、然后我们按照图示代码输入主函数main。
4、然后我们按照图示代码定义一个一维数组。
5、然后我们按照图示代码定义一个数组指针。
6、然后我们按照图示代码输入数组指针指向一维数组。
7、然后我们按照图示代码输入for循环。
8、最后打印出结果即可。
提供两个办法: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)//释放申请的空间.
}
数组的内容是不能一一传给函数的……
限制在C语言中,利用printf直接输出数组是不可以的。但是你的做法是可以的。只是问题出在你数组使用越界了。
解释一下:
printf不能直接用来输出数组。
例如:
#include<stdio.h>
int main(){
int a[3]={1,2,3}
int i
for(i=0i<3i++)
printf("%d",a)
}是错误的
所以要是输出数组的话,必须要借助其他的语句输出,要一个一个地输出,例如for语句的循环输出。
例如:
#include<stdio.h>
int main(){
int a[3]={1,2,3}
int i
for(i=0i<3i++)
printf("%d",a[i])
}但是你这样的做法是可以:
因为你写的a[3][3]实际上已经指定了这个数字在这个二维数组中的横坐标和纵坐标,相当于一个int型的数据。但是不过你数组越界了。
额外引申一下:直接用scanf输入一个数组的量可以么?
#include<stdio.h>
int
main(){
char
a[3]
scanf("%c",&a)
int
i
for(i=0i<3i++)
printf("%c",a[i])
}
这样输入3个字符,只能把输入的第一个字符放进a数组里面。因为a就是这个数组的地址,同时也表示这个数组的第一个。&a可以给数组的第一个放进一个字符,但是后面的就无能为力的。
代码均在Devc++测试。