数组知识点总结

简介: 数组知识点总结

数组的基本知识

注意:数组类型是int[常量],数组元素类型才是int

c99标准之前数组的大小只能是常量指定,不能使用变量

c99之后为什么就使用变量呢?---变长数组

变长数组:数组大小可以根据输入的变量决定其大小的数组--如下

int n;

scanf("%d",&n);

int array[n];

//%p-打印地址
#include<stdio.h>
int main()
{
  int num1[10] = { 1,2,3,4,5,6,7,8,9,10 };
  int i = 0;
  for (i = 1; i < 10; i++)//产生0-9的下标
  {
    printf("&arr[%d]=%p\n",i,& num1[i]);
  }
  return 0;
}

结论:1.数组在内存中是连续存放的

        2.随着下标的增长,地址是由低到高变化的

一维数组的输入和输出:

#include<stdio.h>
int main()
{
  int num1[10] = { 1,2,3,4,5,6,7,8,9,10 };
  int i = 0;
  //输入
  for (i = 0; i <= 9; i++)//产生0-9的下标
  {
    scanf("%d", &num1[i]);
  }
  //输出
  for (i = 1; i < 10; i++)//产生0-9的下标
  {
    printf("%d", num1[i]);
  }
  return 0;
}
数组的输入:输入的是数组元素,输出的的也是元素

数组个数的计算:sizeof

注意:计算数组大小如果是类型括号不可以省略

     例如:

#include<stdio.h>
int main()
{
  int a = 10;
  //size_t
  printf("%d\n", sizeof(int));
  printf("%d\n", sizeof(a));
  printf("%d\n", sizeof a);
  return 0;
}

sizeof 的计算结果是size_t类型的

size_t 是无符号整型

二维数组

定义:将一维数组作为数组元素 ,二维数组的每一个元素是一维数组

二维数组的创建:

语法:

type arr_name[常量1][常量2];

eg:

int arr[3][5];---表示的是三行五列int类型的二维数组,arr是数组名可以自己取

如何进行初始化:

元素按照行的个数进行排放,若有多则换行,若初始化不完全则会补0

如何按照行进行初始化:

因为二维数组的元素是一维数组所以只需要给里面元素加一个{}进行划分即可进行按行输出,如下:

 

 二维数组的访问

利用下标结合for循环进行遍历,数组的行和列都是从0开始的

#include<stdio.h>
int main()
{
  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} };
  //printf("%d\n",arr[1][3]);//[]下标引用操作符
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      printf("%d", arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}

运行结果:

二维数组的输入和输出

#include<stdio.h>
int main()
{
  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} };
  //printf("%d\n",arr[1][3]);//[]下标引用操作符
  //输入
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      scanf("%d", &arr[i][j]);
    }
  }
  //输出
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      printf("%d", arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}

输入数据后的运行结果:

 

#include<stdio.h>
int main()
{
  int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6} ,{3,4,5,6,7} };
  //printf("%d\n",arr[1][3]);//[]下标引用操作符
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      printf("arr[%d][%d]=%p\n",i,j, &arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}

运行结果:

                         arr[0][j]                                   arr[1][j]                                   arr[2][j]

 

由上运行结果可知,二维数组在内存中也是连续存放的.

arr[0],arr[1],arr[2]可以看成是二维数组的数组名

目录
相关文章
|
6月前
|
存储
数组的进阶
数组的进阶
|
3月前
|
安全 编译器 C语言
C++入门-数组
C++入门-数组
|
6月前
|
存储 编译器
数组应该怎么用?
数组应该怎么用?
27 1
|
6月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
59 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
数组的简单认识及其学习(二)
数组的简单认识及其学习(二)
66 0
|
存储 搜索推荐 算法
数组掌握秘籍:Java数组进阶指南
数组掌握秘籍:Java数组进阶指南
|
算法 编译器 C语言
数组知识点(下)
数组知识点(下)
|
存储 编译器 C语言