详解C语言初阶之数组

目录
  • 1.数组
    • 1.1数组的概念
    • 1.2数组的定义
      • a:完全初始化
      • b:不完全初始化
      • c:给定元素个数
      • d:不给定元素个数
    • 1.3数组的下标访问
  • 总结

1.数组

1.1数组的概念

所谓数组(array),就是具有相同数据类型的集合,存放的数据类型即数组本身的类型。

可以发现存储的都是int型

补充 :调试小技巧

调试窗口 (按F5进行调试,打开菜单栏中的调试—窗口—监视—随便打开一个监视窗口,输入arr,将程序运行过arr的初始化即可观察到arr内部进行的初始化)

1.2数组的定义

a:完全初始化

数组内部存储了4个int类型的数据,分别是1,2,3,4

b:不完全初始化

要求开辟四个空间存储数据,但只对第一个进行了初始化,默认后面三个均为0

c:给定元素个数

给定元素个数后,可以是完全初始化,也可以是部分初始化。

d:不给定元素个数

自动给四个元素分配空间,实际上中括号内还是4

注意:

a:不给定元素数据一律视为完全初始化

b:数组内部元素个数至少为1

c:[]内部必须是整型常量(c90 标准)——c99标准支持其他类型(linux),但我们主流仍旧采用c90标准,同样注意,我们一般所用的const定义的常量叫作常变量,本质并不算常量,因此该类型数据同样不能放在【】内

1.3数组的下标访问

数组可以通过指针和下标来进行访问,这里我们来说下标。

数组的第一个元素是【0】,即arr【0】代表第一个元素,arr【5】代表第六个元素

我们通常通过遍历(即循环)来对数组内容进行打印,如果存储的是字符串的话,那我们只需要%s(用来打印字符串)即可。

 注意:

a:通常情况下,数组名即arr是数组的首元素地址(因此对整型数组进行scanf循环输入时,直接scanf(“%d” ,arr)即可,而不用加&符号),但sizeof(arr)中的arr却代表整个数组的大小

b:sz=整个数组的大小/一个元素的大小==元素个数,arr【0】内的0改为1/2/3.....均可,但一般采用0(数组至少一个元素),防止越界访问(如一共只有四个元素,却访问了arr【5】)。

c:对字符数组(存储字符的数组)以%s进行输出时,出现错误,因为%s用来输出字符串类型,即遇到字符串磨人的‘\0'结束符后停止输出,但字符数组中没有默认的'\0'结束符,输出不能停止,超出数组空间后便出现错误,强制终止。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言中指针和数组试题详解分析

    目录 数组题: 程序一(一维数组): 字符数组 程序二(字符数组): 程序三(字符数组): 程序四(字符数组): 程序五(字符数组): 二维数组 程序六( 二维数组): 指针题 程序七( 指针): 程序八( 指针): 程序九( 指针): 程序十( 指针): 程序十( 图): 程序十一( 指针): 程序十二( 指针): 程序十三( 指针): 指针 和 数组 试题解析 小编,在这里想说一下,c语言的最后一节 C预处理,可能还需要一些时间,因为小编,昨天才下载了虚拟机 和 linux 系统,还没开始安

  • 详解C语言之柔性数组

    目录 定义 特点 具体使用例 总结 定义 可调整大小的数组 以0大小数组或无大小数组定义在结构体的最后一个元素中 特点 1.结构体中的柔性数组前必须包含至少一个其他成员. 2.sizeof返回的这种结构体大小不包含柔性数组的内存. 3.包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的大小应该大于结构的大小,以适应柔性数组的预期大小. 具体使用例  实现可调整大小的数组还可用一般的方法: 但是相比之下柔性数组有如下优点: 1.方便内存释放,如果分配两次内存,则需要释放两次

  • C语言strlen和sizeof在数组中的使用详解

    目录 一.前言 二.sizeof在二维数组的试题 解读: 题解: 答案验证: 64位平台下: 32位平台下: 一.前言 前面我们详细讲了sizeof和strlen中的使用,基本涉及了所有一维数组可以和常见的题目类型 那么现在我们就将一维数组告一段落了,现在我们来开始讲解在二维数组的使用了,本篇是 sizeof和strlen的最后一篇了. 二.sizeof在二维数组的试题 #include<stdio.h> int main() { int a[3][4] = { 0 }; printf(&qu

  • C语言柔性数组详解

    目录 前言 一.柔性数组是什么? 二.柔性数组的特点 三.柔性数组的优点 总结 前言 可能大家第一眼看到这个标题会有点懵,到底什么是柔性数组,我怎么从来没听说过?但柔性数组确实是存在的,也经常会出现在一些公司的面试题中,今天就跟着笔者来学习一下柔性数组吧. 提示:以下是本篇文章正文内容,下面案例可供参考 一.柔性数组是什么? C99中,结构体中的最后一个元素允许是未知大小的数组,这就叫作柔性数组,for example: struct st_type { int i; int a[0];//柔性

  • C语言中长度为0的数组详解

    目录 概述 使用方式 总结 概述 长度为0的数组在标准c和c++中是不合法的,但是在gcc中是可行的. 长度为0数组它的最典型的用法就是位于结构体中的最后一项. 使用方式 如下面的例子,分别使用长度为0的数组和指针声明结构体,实现可变长度的数组功能: #include <stdio.h> #include <stdlib.h> struct test1 { int a; int b[0]; }; struct test2 { int a; int *b; }; struct tes

  • C语言 array数组的用法详解

    目录 一维数组的创建与初始化 程序一: 程序二: 程序三 程序四(二维数组 - 二维数组 的 列 绝对不能 省略 ) 二维数组在内存中的存储 程序一 数组作为函数参数,怎么作? 实例:冒泡排序 数组名: 一维数组的创建与初始化 数组是一种相同类型元素的集合 程序一: #include<stdio.h> #include<string.h> int main() { 创建一个数组 int arr1[10];// [常量] 初始化 int arr[10]={1,2,3};不完全初始化,

  • 详解C语言初阶之数组

    目录 1.数组 1.1数组的概念 1.2数组的定义 a:完全初始化 b:不完全初始化 c:给定元素个数 d:不给定元素个数 1.3数组的下标访问 总结 1.数组 1.1数组的概念 所谓数组(array),就是具有相同数据类型的集合,存放的数据类型即数组本身的类型. 可以发现存储的都是int型 补充 :调试小技巧 调试窗口 (按F5进行调试,打开菜单栏中的调试-窗口-监视-随便打开一个监视窗口,输入arr,将程序运行过arr的初始化即可观察到arr内部进行的初始化) 1.2数组的定义 a:完全初始

  • 详解C语言初阶基础

    目录 1.什么是c语言 2.初始化: 3.变量和常量 4.作用域与生命周期 简单阐述: 作用域: 生命周期(存在与消失): 作用域与生命周期的区别 作用域: 生命周期: 5.     为什么c中存在了各种数据类型: 6.常量: 7.c语言的字符串: 8.转义字符(\) 注意: 9.注释: 快捷键 总结 1.什么是c语言 c语言是一门通用计算机编程语言,是一种面向对象的编译型语言,广泛用于底层开发.其设计目的是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何环境便能运行的

  • 详解C语言初阶基础(2)

    目录 1.选择语句(if) 2.循环 while循环 for循环 do-while循环 补充 总结 1.选择语句(if) 我们先不讲switch,后面会补充.先来对简单地if进行了解. 我们已经知道,计算机的本质是为了服务于人,我们在日常生活中会遇到各种各样的选择,于情于理计算机都应该有选择语句来对应和我们的生活逻辑. 因此 if语句就是做一个选择,对计算机来说,选择只有真假之分,真就是非0(注意不是1,而是非0),假就是0. if(条件),通过对条件的判断来决定来执行哪一个分支,多分支我们可以

  • 详解C语言初阶之函数

    目录 1.main函数 2.自定义函数 2.1  函数的的封装和面向过程的思维 3.函数的组成 3.1函数的命名法 3.2函数的返回值 3.2.1void类型 补充: 3.3形参与实参 总结 1.main函数 第一个函数是我们的main函数,它无处不在,main函数被称之为我们的入口函数,程序在运行时,从main函数进入,从main函数出来,main函数其实就是整个程序功能的集合,所有的功能必须被包含在main里面才可以被运行(预处理命令,宏定义,全局变量什么的当然要优先处理,再次不讨论这些).

  • C语言初阶之数组详细介绍

    目录 插入排序讲解 二维数组 二维数组的初始化 二维数组的访问 n维数组 字符数组 字符数组和字符串 字符数组的输入输出 字符串函数的简单使用 综合使用字符串函数 总结 插入排序讲解 #include<stdio.h> int main() { int arr[8] = { 1,2,3,4,6,7,10 }; int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); int n = 0; scanf("%d", &n); f

  • 详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include <stdio.h> #include <string.h> //该程序的功能是 输入阿拉伯数字的月份数 输出英文月份 int main() { //一个字符串数组 它的下标代表英文月份的阿拉伯数字 char *month[] = {"January","Februa

  • 详解Go语言如何利用高阶函数写出优雅的代码

    目录 前言 问题 白银 黄金 王者 总结 前言 go项目中经常需要查询db,按照以前java开发经验,会根据查询条件写很多方法,如: GetUserByUserID GetUsersByName GetUsersByAge 每一种查询条件写一个方法,这种方式对外是挺好的,对外遵循严格原则,让每个对外的方法接口是明确的.但是对内的话,应该尽可能的通用,做到代码复用,少写代码,让代码看起来更优雅.整洁. 问题 在review代码的时候,针对上面3个方法,一般写法是 func GetUserByUse

  • 详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include <stdio.h> int main() { char * p=(char *)malloc(sizeof(char)*5);//申请包含5个字符型的数组 free(p); return 0; } 是否申请二维动态内存也如此简单呢?答案是否定的.申请二维数组有一下几种方法 Sample two /* 申请一个5行3列的字符型

  • 详解C语言数组越界及其避免方法

    所谓的数组越界,简单地讲就是指数组下标变量的取值超过了初始定义时的大小,导致对数组元素的访问出现在数组的范围之外,这类错误也是 C 语言程序中最常见的错误之一. 在 C 语言中,数组必须是静态的.换而言之,数组的大小必须在程序运行前就确定下来.由于 C 语言并不具有类似 Java 等语言中现有的静态分析工具的功能,可以对程序中数组下标取值范围进行严格检查,一旦发现数组上溢或下溢,都会因抛出异常而终止程序.也就是说,C 语言并不检验数组边界,数组的两端都有可能越界,从而使其他变量的数据甚至程序代码

  • 详解C语言数组灵活多变的访问形式

    C语言中的指针使得代码的编写非常灵活,如果指针能够和数组结合,那将会有更多的"花招",请看下面的代码: #include <stdio.h> int main(){ char str[20] = "c.biancheng.net"; char *s1 = str; char *s2 = str+2; char c1 = str[4]; char c2 = *str; char c3 = *(str+4); char c4 = *str+2; char c

随机推荐