C语言轻松学习-8

第八章

任务一:一维数组的基本定义和基本使用

任务二:选择排序

任务三:冒泡排序

任务四:“选择排序”和“冒泡排序”的区别

小结

习题

今天,我们来学习“一维数组”,“一维数组”从字面意思可以看出来是多个数据分成了一个组,有序的元素数列,数组有一维数组,二维数组,三维数组,多维数组…具体描述,可进入“百度百科”自行了解,我们本章只讲一维数组,下一章将会将二维数组。

我们先来看C语言中的“一维数组”是如何定义的,

int a[6];  意思是定义一个整数类型的一维数组,数组名为 a 其中数组的元素(成员)数量为6个,这里的6个元素(成员)已经被分配到了由 数组名为 a 为首地址(这里的首地址为:a[0])后面的储存区域之中,如图(内存区域图):

其实在我们定义一维数组并分配n个元素(成员)的时候,系统会自动给每个元素(成员)分配一个值,因为在内存中,不能有空值的出现,无论我们如何定义,就算是非数组,只要我们定义了,占内存区域了,那么将必须有某个数值先暂时占用这个空间

a[0]=1; 给一维数组名为 a 的 “下标” 为 0 (也就是第一个位置)赋值为1,这里的a[0]中的0是指“下标”不同语言的数组“下标”起点值可能不同“C语言”的数组“下标”由“0”为起点,而“E语言”数组的“下标”由“-1”为起点

a[1]=2;给一维数组名为 a 的 “下标” 为 1 (也就是第二个位置)赋值为2,

printf 我们输出一维数组和输出 int 类型的 一般数值 是一样的,

#include<stdio.h>
int main()
{
  int a[6];
  a[0]=1;
  a[1]=2;
  printf("a[0]=%d a[1]=%d\n",a[0],a[1]);
  return 0;
}

代码调试截图:

上面的定义方式其实是受限制的,一般我们使用的很少,因为我们后期修改更新软件时,说不定就需要额外的数组,但也不敢修改,怕出现一重又一重的bug,

那么我们还有其他定义一维数组的办法,就是我们定义一个常量,用这个常量来控制数组的元素(成员)数量的多少,这样可以轻松管理,(原来打算用 一个变量来控制,可以会出现乱值)

#include<stdio.h>
#define N 3
int main()
{
  int a[N];
  a[0]=1;
  a[1]=2;
  a[2]=3;
  printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
  return 0;
}

代码调试截图:

我们再看看下一个定义方式,数组的使用方式近似变量,那么我们也可以像变量一样定义时给予赋值,

#include<stdio.h>
#define N 3
int main()
{
  int a[N]={1,2};
  printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
  return 0;
}

 

那么,我们发现我们定义了3个元素(成员),其中前两个已经给予赋值,第三个没有给予赋值,那么第三个元素(成员)输出的内容,将会自动被填充为“0”(PS:我感觉因为没有赋值,所以编译器将这个数变为0也就是假,,,这仅仅是我的猜想)

代码调试截图:

我们也可以这样定义:

a[]={};中括号不写定义多少个元素(成员),只需要直接在花括号里填写数值就行,它会自动为你所填写的数值的个数多少而分配多少内存空间,

#include<stdio.h>
int main()
{
  int a[]={1,2,3,4,5,6};
  printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
  printf("a[10]=%d\n",a[10]);
  return 0;
}

若输出超出内存空间的数值,将会出现乱值,

代码调试截图如下:

我们可以猜想一下这个a[10]会不会是a[]的地址,

代码如下:顺便给大家展示一下,各个数组之间地址的联系,

#include<stdio.h>
int main()
{
  int a[]={1,2,3,4,5,6};
  printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
  printf("a[10]=%d\n第一个元素地址%d\n第二个元素地址%d\n第三个元素地址%d\n",a[10],&a[0],&a[1],&a[2]);
  return 0;
}

代码调试截图如下:我们发现我们猜想的a[10]地址和a[]有关,那么这个猜想是错误的,但我们发现了a[0],a[1],a[2]之间元素的地址关系,都相邻相差4,这个4恰好是 int 类型的内存大小。

我们稍作休息,然后进入下一页学习“选择排序”

本文作者为:晗雅|星空,转载请注明!版权必究!
1 2 3 4 5 6
分享到:

请选择你看完该文章的感受:

4瞧一瞧 0扯淡 5学到了 0不懂 6正能量 3无聊

评论抢沙发

评论前必须登录!