五大板块(1)—— 数组的定义,赋值与应用

2023-10-27

参考:五大板块(1)—— 数组的定义,赋值与应用
作者:丶PURSUING
发布时间: 2021-03-18 16:00:05
网址:https://blog.csdn.net/weixin_44742824/article/details/114981166

数组的定义及访问

完全初始化,部分初始化,不初始化

#include <stdio.h>
#include <string.h>

int main()
{
        int i;
        
        //不初始化
        int array1[10];
        
        //完全初始化
        int array2[5]={1,2,3,4,5};
        
        //部分初始化
        int array3[5]={0};

        for(i=0;i<10;i++){
                printf("%d ",array1[i]);
        }
        putchar('\n');
        
        for(i=0;i<5;i++){
                printf("%d ",array2[i]);
        }
        putchar('\n');
        
        for(i=0;i<5;i++){
                printf("%d ",array3[i]);
        }
        putchar('\n');


        return 0;
}

运行结果:
可以看到不初始化的时候值是随机分配的,不建议采用这种方式。

1996072264 1 0 1995852616 67032 66992 0 66376 0 0 
1 2 3 4 5 
0 0 0 0 0 

 
 
 
 
  • 1
  • 2
  • 3

应该采用部分初始化,初始化第一个元素,其他元素的值默认为0

注意:
数组只有在定义的时候[ ]表示个数,其他时候都是下标。
数组的下标是从0开始,即数组的第一个元素是a[0]
数组的最后一个元素是a[i-1]

关于数组赋值,还需要注意:

Ⅰ、大多情况下,数组在定义时必须确定大小

例如类似下面的情景,数组定义时大小是不确定的,妄图通过后续改变的num进行动态赋值,这样的操作往往出现段错误

#include <stdio.h>

int main()
{
        int num;
        int i;
        
        int array[num];
        printf("需要录入的学生人数?\n");
        scanf("%d",&num);
        //int array[num];

        for(i=0;i<num;i++){
                printf("请输入第%d个学生的成绩\n",i+1);
                scanf("%d",&array[i]);
        }

        printf("这些学生的成绩是:");

        for(i=0;i<num;i++){
                printf("%d ",array[i]);
        }

        return 0;
}

结果:

Segmentation fault

 
 
 
 
  • 1

是因为只有数组在定义的时候确定了大小,程序才能根据这个大小分配一段连续的内存空间给数组存放数据。

下面为探索过程-----------------

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

五大板块(1)—— 数组的定义,赋值与应用 的相关文章

  • 第四章 STP协议

    目录 环路问题 STP树的生成 STP报文格式 STP的改进 STP配置示例 环路问题 为了提高网络的可靠性 交换网络中通常会使用冗余链路 然而 在冗余链路中会给交换网络带来环路风险 并导致广播风暴以及MAC地址表不稳定等的问题 进而影响到
  • 一文详解编程中的随机数

    一文详解编程中的随机数 随机数的类型 真随机数生成器 TRNG True Random Number Generator 伪随机数生成器 PRNG Pseudo Random Number Genrator 随机数的使用 真随机数 开发中常
  • 机器学习之数据处理过程小知识+参考网址集合

    机器学习之数据处理过程小知识 画图 fig ax plt subplots 的理解 这个fig ax plt subplots 的意思是 建立一个fig对象 建立一个axis对象 不然要用更复杂的方式来建如下 fig plt figure
  • nginx 五种策略

    nginx 五种策略 1 轮询 每个请求按照时间顺序分配到不同的服务器 如果后端服务器down掉 就自动剔除了 2 指定权重 用于性能不均 哪个服务器分配的多些 weight 3 3 ip绑定 每个请求按照ip的hash结果分配 一个访客一

随机推荐

  • cocos2d-x开发中jni相关记录

    使用加载的uijson文件中的按钮时 在按钮的响应函数里面删除掉 this gt removeFromParent ui所在的层时 发生崩溃 解决办法 修改UIWidget cpp文件中releaseUpEvent函数 如图 1 在coco
  • torch.device(‘cuda:0‘ if cuda else ‘cpu‘)

    这个地方的cuda 0 实际上并不是0号GPU 他取决于CUDA VISIBLE DEVICES 然后逻辑GPU和物理GPU有一个对应关系 如果CUDA VISIBLE DEVICES为2 1 3 那么CUDA 0就是2号GPU CUDA
  • Redhat 7搭建iscsi存储系统

    内容 常见硬盘介绍 NAS 和 SAN 服务器概述 实戓 配置 IP SAN 服务器 实戓 IP SAN 服务器日常操作 存储设备 阵列柜 SAS 容量小 300G 600G 价格贵 SATA 容量大 不支持热插拔 价格低 假 SAS 盘
  • Linux系统性能瓶颈分析

    1 前言 作为后台程序员 经常和系统打交道 自己的程序也跑在系统中 有时候运行一段时间后会发现系统莫名奇妙就很卡 这个时候需要一些手段来判断到底是什么原因导致系统运行慢 是cpu占用高 内存不够 磁盘读写io阻塞还是程序本身逻辑问题 等等
  • SpringCloud-服务调用

    服务调用 Ribben负载均衡 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具 简单的说 Ribbon是Netflix发布的开源项目 主要功能是提供客户端的软件负载均衡算法和服务调用
  • c语言中常用函数头文件,c语言中常用的函数和头文件

    头文件ctype h 函数列表 函数类别函数目的详细说明 字符测试为字符和数字的isalnum 是否为isalpha字符 是否控制字符iscntrl 是否为数字isdigit 是否能够显示文字 空格除外 isgraph 是否可以显示字符 包
  • unity hold on 打不开脚本

    alt F4
  • Attention的原理和实现

    Attention的原理和实现 目标 知道Attention的作用 知道Attention的实现机制 能够使用代码完成Attention代码的编写 1 Attention的介绍 在普通的RNN结构中 Encoder需要把一个句子转化为一个向
  • 微信小程序编译报npm错误

    手摸手带你操作 错误截图如下 因为我的项目中使用了TS 所以会报 乱码的意思 npm 不是内部或外部命令 也不是可运行的程序 1 首先确保你已经安装了nodeJS并且配置系统环境变量 然后会下面比较尴尬的局面 在外部的CMD命令npm是支持
  • LeetCode-142-环形链表II

    给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos 来表示链表尾
  • 四、Vue.js 模板语法

    本章概要 应用程序实例 插值 指令 Vue js 使用了基于 HTML 的模板语法 允许开发者声明式地将呈现的 DOM 绑定至底层组件实例的数据 所有的 Vue js 模板都是有效的 HTML 可以被符合规范的浏览器和 HTML 解析器解析
  • 理解全虚拟、半虚拟以及硬件辅助的虚拟化

    接触过的一些搞了几年云计算的童鞋 也没明白常见的几种虚拟机技术方案的异同 比如只是记住了半虚拟要在虚拟机装驱动而全虚拟不需要 也不知道有时候为什么需要打开BIOS里的VT项 本人呢 在看了各种讲解虚拟化的书籍之后 有些概念虽然不是很清晰 但
  • 知识学习及备忘

    1 根据进程名获取ID 同时可以判断该进程是否在运行 若是预先知道进程id 可以根据进程id知道该进程是否运行 linux中通过proc获取进程名以及PID JDSH0224的博客 CSDN博客 proc 进程名 2 linux syste
  • android之Uri的常用几个例子

    题外话 URL Uniform Resource Location 统一资源定位符 URI Universal Resource Identifier 通用资源标志符 原文转载于http yu46612143 iteye com blog
  • SSM框架学习——【Spring】——Spring IOC & DI 控制反转与依赖注入

    Spring IOC DI 文章目录 Spring IOC DI IoC 容器 Spring 的 BeanFactory 容器 Spring ApplicationContext 容器 IOC与DI的概念 传统开发模式 ioc开发方式 De
  • 编译时提示 conflicting types for 错误的解决办法

    编译时错误提示 error conflicting types for xxx error previous implicit declaration of xxx was here 原因与解决办法 一 函数使用的位置位于声明之前 或未声明
  • 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序 现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的 GRUB2采用了模块化设计 使得GRUB2核心更加精炼 使用更加灵活 同时也就不需要像 GRUB那样分为stage
  • python numpy.argpartition

    a 9 1 8 2 7 3 0 6 4 5 14 56 110 ind np argpartition a 4 4 1 b for i in ind print a i b append a i print b b c sorted b r
  • Vectory 源码分析

    Vector vector是java很早就出来的一个继承list的子类 基本属于淘汰级别 它与ArrayList相比实现级别相同 但Vector是线程安全的 基本上所有的方法都添加了Synchronized关键字来实现方法级别的同步锁 虽然
  • 五大板块(1)—— 数组的定义,赋值与应用

    参考 五大板块 1 数组的定义 赋值与应用 作者 丶PURSUING 发布时间 2021 03 18 16 00 05 网址 https blog csdn net weixin 44742824 article details 11498