-
求助!!!c语言:数值数组为什么只能利用循环才能输出所有元素?
2025-09-08 00:48:13
社区
C语言 帖子详情 求助!!!c语言:数值数组为什么只能利用循环才能输出所有元素? 卖报小郎君 2020-02-27 12:07:05 c语言中,字符数组和数值数组都可以用数组名代表首元素地址。但是,打印数组的所有元素的时候,我发现,字符数组可以利用数组名全部打印,而数值数组只会打印首元素地址。换句话说,数值数组只有靠循环才能打印所有元素。这是为什么?有没有什么方法可以不通过循环打印数值数组所有元素?
代码:
#include
int main (int argc,char *argv[])
{
int i=0;
int arr[5]={1,2,3,4};
char arr1[5]="abcd";
printf("%d\n",&arr);
printf("%s\n",arr1);
for(i=0;i<5;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
运行结果:
...全文
1385 4 打赏 收藏 求助!!!c语言:数值数组为什么只能利用循环才能输出所有元素? c语言中,字符数组和数值数组都可以用数组名代表首元素地址。但是,打印数组的所有元素的时候,我发现,字符数组可以利用数组名全部打印,而数值数组只会打印首元素地址。换句话说,数值数组只有靠循环才能打印所有元素。这是为什么?有没有什么方法可以不通过循环打印数值数组所有元素? 代码: #include int main (int argc,char *argv[]) { int i=0; int arr[5]={1,2,3,4}; char arr1[5]="abcd"; prin 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 4 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 qybao 2020-02-27 打赏举报 回复 没有办法,这是打印格式的规则。%s会从数组首地址开始按字符打印,直到遇到'\0'字符才结束打印,%d就只是打印一个整形。
而且数组的地址是个数组指针,所以printf("%d\n",&arr); 就是打印一个地址而已
自信男孩 2020-02-27 打赏举报 回复 字符数组是因为有'\0',即字符串结束标记。%s输出其实是一个字符一个字符输出直到遇到'\0'结束。
%d输出是输出内存4个字节(32位系统)的内容。 寻开心 2020-02-27 打赏举报 回复 数组就是数组,代表的是是同类型的一个连续的存储区域;
但是直接拿数组的名字使用的时候,除了sizeof函数,都是在把它当做指针来使用的
函数传参的时候一样, 数组的名字就是指针,你无法把一个数组所有的数据都作为参数传进去
其实你可以想一下,自己如何来实现这个printf函数来打印数组的
你可以定义一个函数MyPrintf(),要打印数组,你如何传递参数? 需要一个指针,还需要一个大小
光传递一个指针进去是不行的
void MyPrintf(int a[10]) {
printf("%d\n", sizeof(a) / sizeof(int));
}
int main () {
int a[10];
printf("%d\n", sizeof(a)/sizeof(int));
MyPrintf(a);
return 0;
}
你猜, MyPrintf函数会打印出什么? 1, 2, 还是10?
试验告诉我们,函数传参进来后,你即便传递给它的是一个数组对象,但是传递进来的它还就是一个指针
你不知道他的大小,自然就无法打印整个数组了
weixin_40290083 2020-02-27 打赏举报 回复 对于数值数组你也可以使用printf("%s",arr);进行打印,但是由于数值数组的值中是否有‘\0’值,却不得而知,打印的也可以是乱码。
对于字符数组,如果printf中的输出控制符使用%c,或乾%d,也是要逐一遍历字符数组才可以的。 课堂随练C语言代码 课堂随练C语言代码,是一些简单的C语言编写的代码,求最大值,排序、单链表等初步学习C语言的一些代码。 全国计算机等级考试二级教程 可以很好的叫你如何学习计算机二级,用怎样的技巧通过计算机二级的等级考试 c语言数组判断不及格人数,C语言编程 运用数组求不及格人数 C语言编程题,求数组89,80,95,84,73,84,91,78,87,94的和以及平均值#includevoidmain(){inta[10]={89,80,95,84,73,84,91,78,87,94};ic语言编程,二维数组求助printf("%d",&a[i][j]);变为printf("%d",a[i][j]);C语言编程题 求大神解答好久没写C了,不知道对不对:in... C语言:L2-001 紧急救援 (25 分) — Dijkstra 文章目录一、题目二、方法11、相关知识点(1)图论(2)迪杰斯特拉算法(Dijkstra):①概念②图解③代码2、思路(1)输入(2)Dijkstra(3)输出3、代码
一、题目
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。
输入格式:
输入第一行给出4个正 C语言求1000后面有多少个0,c语言题目计算1000!的末尾有多少个零 一道用C语言编程计算积分的题目,求大神解答!可追分.你好,最近时间不多,所以只能提示你一下,这个题目的重点不是要算积分,而是解非线性的方程.但是其中可能涉及到数值积分或者微分的问题.由于非线性的方程解的结构因题目而异所以只有数值方法.区间二分法是其中最C语言编程问题:题目计算圆的面积.你这个怎么看都是错的第一,主函数是这样定义的吗第二,这里乘法运算需要把float型转化为double型最后,没有返...
C语言
70,025
社区成员
243,253
社区内容
发帖 与我相关 我的任务 C语言 C语言相关问题讨论 复制链接
扫一扫 分享 确定 社区描述 C语言相关问题讨论 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章