【数组】C语言(4)

C数组

  • 固定长度
  • 相同类型元素
  • 顺序集合
  • 内存连续

初始化数组

// 定义数组并初始化
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

// 如果省略了数组大小,数组大小则初始化为元素个数,它与前一个实例创建的数组完全相同
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

// 对第五个元素赋值
balance[4] = 50.0;

所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。

æ°ç»è¡¨ç¤º

访问数组元素

#include <stdio.h>

int main()
{
    int n[10];
    int i, j;

    for(i=0; i<10; i++)
    {
        n[i] = i + 100; //逐一赋值
    }

    for(j=1; j<10; j++)
    {
        printf("Element[%d]=%d\n", j, n[j]);  // 逐一打印
    }

    return 0;
}

output:

Element[1]=101
Element[2]=102
Element[3]=103
Element[4]=104
Element[5]=105
Element[6]=106
Element[7]=107
Element[8]=108
Element[9]=109

多维数组

多维数组声明一般形式如下:

type name[size1][size2][size3]...[sizeN];
int a[3][4] = {
{1, 2, 3, 4},
{4, 5, 6, 7},
{7, 8, 9, 10}};

// 内部嵌套的括号可以省略
int a[3][4] = {
1, 2, 3, 4,
4, 5, 6, 7,
7, 8, 9, 10};

二维数组的访问

#include <stdio.h>
 
int main ()
{
   /* 一个带有 5 行 2 列的数组 */
   int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
   int i, j;
 
   /* 输出数组中每个元素的值 */
   for ( i = 0; i < 5; i++ )
   {
      for ( j = 0; j < 2; j++ )
      {
         printf("a[%d][%d] = %d\n", i,j, a[i][j] );
      }
   }
   return 0;
}

output:

a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8

传递数组给函数

必须以下面三种方式来声明函数形式参数,每种方式都会告诉编译器将要接收一个整型指针

// 方式1:形参是个指针
void myFunction(int *param);

// 方式2:形参是个已定义大小的数组
void myFunction(int param[10]);

// 方式3: 形参是个未定义大小的数组
void myFunction(int param[]);

从函数返回数组

  • C 语言不允许返回一个数组作为函数的参数,可以返回一个指向数组的指针
  • 另外,C 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。

 生成随机数组的例子:

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


int *getRand();

int main()
{
    int i;
    int *p;  //定义整型指针接收数组地址

    p = getRand();  //调用时不写函数类型
    for(i=0; i<10; i++)
    {
        printf("*(p+%d): %d\n", i, p[i]);  // p[i]或者*(p+i)
    }

    return 0;
}

int *getRand()
{
    int i;
    static int arr[10];  // static修饰局部变量才允许返回地址

    srand((unsigned)time(NULL));  // 初始化随机函数种子
    for(i=0; i<10; i++)
    {
        arr[i] = rand();
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    printf("\n");

    return arr;
}


 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值