工作生活C语言

C语言 第5节 数组

2019-07-06  本文已影响0人  小超_8b2f
  1. 为什么需要数组
    为了解决大量同类型数据的存储和使用的问题
    (定义n多个不同的变量名,累死;)
    为了模拟现实世界
数组的分类:
  1. 一维数组(线)

错误,5是下标。只有在定义数组的时候才能整体赋值,其他情况下的整体赋值都是错误的。
正确写法:
for(int i = 0; i < 5; i++)
b[i] = a[i];

如何将数组a的值全部赋值给数组b?

错误写法:
b = a;
a和b代表数组名,代表数组第一个元素地址:即a[0]地址和 b[0]地址

#include <stdio.h>

int main(void) {
    
    int a[5];
    scanf("%d", &a[0]);
    printf("a[0] = %d\n", a[0]);

    scanf("%d", &a[3]);
    printf("a[3] = %d\n", a[3]);
    for(int i =0; i < 5; i++)
        printf("%d ", a[i]);
    return 0;
}
------------------结果-------------------------
123
a[0] = 123
456
a[3] = 456
123 -858993460 -858993460 456 -858993460
------------------------------------------------

反转数组中的数据:

#include <stdio.h>

int main(void) {
    int a[7] = {1,2,3,4,5,6,7};
    int i = 0;
    int j = 6;
    int t;
    while(i < j) {
        t = a[i];
        a[i] = a[j];
        a[j] = t;
        i++;
        j--;
    }
    for( i =0; i < 7; i++)
        printf("%d ", a[i]);
    return 0;
}

赋值、排序、求最大值、最小值、求个数

初始化:

  1. int a[3][4] = {1,2,3,4,5,6,7,9,10,11,12};
  2. int a[3][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
    };
for(int i = 0; i < 3, i++)
  for(int j = 0; j < 4; j++)
      printf("%-5d ", a[i][j]);  //负号表示左对齐,5表示5个光标位置
printf("\n");

对二维数组的排序
求每一行最大值
判断矩阵是否对称
矩阵的相乘

....

#include <stdio.h>

int main(void){

    int a[5] = {1,2,3,4,5};
    for(int i = 0; i < 5; i++)
        printf("%d\n",a[i]);

    printf("%d\n", a[100]); //有值有结果,但是是脏数据,非数组的数据
}

数组不是重点,因为数组太原始太底层了,排序啊,插入啊,啥的都需要自己编写。现在的编程语言都已经提供了这样的工具类。以数组为底层,你操作起来很简单实用,不麻烦。所以数组一般很少用。

数组的限制

1.数组的长度不能通过变量的形式指定

int a[5]; //OK
int lent = 5; int a[len]; /error
  1. 传统形式定义的数组,该数组内程序员无法手动释放
    在一个函数运行期间,系统为该函数中的数组分配的空间会一直存在,直到该函数运行完毕时,数组的空间才会被系统释放
  2. 数组的长度一旦定义,其长度不能更改。
    数组的长度不能再函数运行过程中动态地扩充或缩小
  3. 传统方式定义的数组不能跨函数使用
    A函数定义的数组,在A函数运行期间可以被其他函数调用,但A函数运行完毕之后,A函数的中的数组将无法被其他函数调用
#include <stdio.h>
  
int main(void) {
  int arr[] = {3, 5, 8,2,54, 9,7};
  int *p = arr;
  int len = sizeof(arr) / sizeof(int);

  for(int i = 0; i < len; i++){
   //printf("%d " , *(arr+i));
   //printf("%d ", arr[i]);
   //printf("%d ", *(p+i));
   //printf("%d ", p[i]);
   //printf("%d ", *p++);
   printf("%d ", *(p++));
   //printf("%d ", arr++);//arr是常量,++会改变其值,❌
  }
  printf("\n");
}
上一篇 下一篇

猜你喜欢

热点阅读