C-数组

2019-08-02  本文已影响0人  小石头呢

数组可以存储一个固定大小的相同类型元素的集合;所有数组都是由连续的内存位置组成;最低的地址对应第一个元素;最高的地址对应最后一个元素。

一.声明数组

type arrayName [ arraySize ];

声明一个数组,需要指定元素的类型和元素的数量

二.初始化数组

可以逐个初始化数组,也可以使用一个初始化语句

三.初始化,定义例子

//初始化里面确定数组大小
int num[4] = {};

//在定义时明确指定数组的大小
int num[4] = {1,2,3,4};

//在定义时明确指定大小,并且初始化部分数据
//剩余的数据一般初始化为对应的数据类型的默认值
int num[4] = {1,2};

四.访问方式

五.多维数组

声明:type name[size1][size2]...[sizeN];

二维数组

多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。声明一个 x 行 y 列的二维整型数组,形式如下:

type arrayName [ x ][ y ];

一个二维数组可以被认为是一个带有 x 行和 y >列的表格。下面是一个二维数组,包含 3 行和 4 列:


int x[3][4]

初始化二维数组

多维数组可以通过在括号内为每行指定值来进行初始化

int a[3][4] = {  
   {0, 1, 2, 3} ,   /*  初始化索引号为 0 的行 */
   {4, 5, 6, 7} ,   /*  初始化索引号为 1 的行 */
   {8, 9, 10, 11}   /*  初始化索引号为 2 的行 */
};

内部嵌套的括号是可选的,下面的初始化与上面是等同的:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

六.传递数组给函数

对形参的改变会影响到实参,因为传递的是数组的首地址

三种方式声明一维数组形式参数:

void myFunction(int *param){

}
void myFunction(int param[10]){

}
void myFunction(int param[]){
   //就函数而言,数组的长度是无关紧要的
   //因为 C 不会对形式参数执行边界检查
}

七.从函数返回数组

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//计算机并不能产生真正的随机数
//而是已经编写好的一些无规则排列的数字存储在电脑里
//把这些数字划分为若干相等的N份
//并为每份加上一个编号用srand()函数获取这个编号
//然后rand()就按顺序获取这些数字,当srand()的参数值固定的时候
//rand()获得的数也是固定的,所以一般srand的参数用time(NULL)
//因为系统的时间一直在变
//所以rand()获得的数也就一直在变,相当于是随机数了。
 
/* 要生成和返回随机数的函数 */
int * getRandom( ){
  static int  r[10];
  int i;
 
  /* 设置种子 */
  srand( (unsigned)time( NULL ) );
  for ( i = 0; i < 10; ++i)
  {
     r[i] = rand();
     printf( "r[%d] = %d\n", i, r[i]);
 
  }
 
  return r;
}
 
/* 要调用上面定义函数的主函数 */
int main (){
   /* 一个指向整数的指针 */
   int *p;
   int i;
 
   p = getRandom();
   for ( i = 0; i < 10; i++ )
   {
       printf( "*(p + %d) : %d\n", i, *(p + i));
   }
 
   return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读