c语言中能不能用printf函数直接输出数组?如printf("%d",a[3][3]);限制在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++测试 。
c语言中用函数调用,用动态分配方式 , 把字符数组输出 。#include
stdio.h
#include
string.h
#include
malloc.h
using
namespace
std;
void
display(char
*str){
for(int
i
=
;
i
strlen(str)
;
i++)
{
printf("%c"
,
str[i])
;
}
printf("\n");
}
void
getChar(char
*str){
scanf("%s"
,
str)
;
}
int
main(){
int
len
=
128
;
char
*str
=
(char
*)malloc(len
*
sizeof(char))
;
while(true){
printf("请输入一些字符c语言用函数数组输出:");
getChar(str)
;
printf("您输入c语言用函数数组输出的字符为:");
display(str)
;
printf("\n");
}
}
c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊用指针 , 另外保存数据的变量退出函数时不得消失 。
例如:
#includestdio.h
int * fun(int n)
{
int i;
static int a[100]; // 这里用static
for (i=0;in;i++) a[i]=i;
return a[0];
}
void main()
{
int i,n=5;
int *p; // 声明指针
p = fun(n); // 返回指针
for (i=0;in;i++) printf("%d\n",p[i]); // 把 p 看成数组来输出
}
得 0 1 2 3 4
扩展资料:
注意事项
1、数组的维度必须是一个常量表达式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表达式
int arr1[i];//正确
int arr2[j];//错误
system("pause");
return 0;
}
2、默认情况下,数组的元素被默认初始化 。
而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值 。
c语言中,定义一个函数,函数输出结果是一个数组 , 整个的形式是怎么样的?提供两个办法:
1.在主调函数中建立数组c语言用函数数组输出,将数组指针传给自定义c语言用函数数组输出的函数,处理后主调函数中的数组值也就变化c语言用函数数组输出了 。
void fun(int a[],int n){
推荐阅读
- 模拟器游戏账号转移不了,模拟器游戏数据转移到手机
- 如何在淘宝上推广小吃铺,推广淘宝店铺商品自己要怎么推广
- 拍摄奥特曼视频需要什么,奥特曼怎么拍摄现场
- B站看直播翻译,b站开翻译
- vb.net能制作网站吗 vbnet web
- 如何做好新媒体数据分析,新媒体数据分析要点的主要内容
- ppt框线如何取消,ppt的框线怎么删除
- 情侣飞行象棋游戏,情侣飞行棋游戏app
- linux命令窗口粘贴 linux常用命令粘贴