数组(C语言) 您所在的位置:网站首页 systemverilog二维数组读出 数组(C语言)

数组(C语言)

#数组(C语言)| 来源: 网络整理| 查看: 265

文章目录 1 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化1.3 数组的使用1.4 一维数组在内存中的存储 2 二维数组2.1 二维数组的创建和初始化2.2 二维数组的使用2.3 二维数组在内存中的存储 3 数组越界4 数组作为函数参数

在这里插入图片描述

1 一维数组的创建和初始化 1.1 数组的创建

使用type_t arr_name[const_n]创建数组 type_t是类型,const_n是常量表达式

int arr[10]; char arr2[10]; double arr3[5]; double arr4[2+3]; C99支持变长数组,OJ也支持,但VS19,22不支持 在这里插入图片描述 1.2 数组的初始化

创建数组的同时初始化数组

指定大小的不完全初始化 int arr[10] = {1};//第一个元素初始化为1,其余的元素默认初始化为0 char ch1[10] = { 'a','b','c'};//a b c 0 0 0 0 0 0 0 char ch2[10] = "abc"; //a b c 0 0 0 0 0 0 0

注意"abc"指定了a,b,c,\0四个字符,{ 'a','b','c'}只有三个.其余全是\0.因为[10].

char ch3[] = "abc"; char ch4[] = { 'a', 'b', 'c' }; char ch5[10] = "abc";

注意ch3大小4,ch4大小3. 在这里插入图片描述 97是a,0就是\0. 注意'0'是字符零,ASCII码是48

禁止数组越界 Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted. //char arr[] = ""; //scanf("%s", arr); //printf("%s\n", arr); int arr[] = { 0 };//1 int i = 0; for (i = 0; i int arr[20] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //0~9 int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i int arr[10] = { 1,2,3,4,5,6,7,8,9,10}; //0~9 int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i 1,2,3,4,5,6,7,8,9,10}; &arr[0] = 004FF820 &arr[1] = 004FF821 &arr[2] = 004FF822 &arr[3] = 004FF823 &arr[4] = 004FF824 &arr[5] = 004FF825 &arr[6] = 004FF826 &arr[7] = 004FF827 &arr[8] = 004FF828 &arr[9] = 004FF829 数组开辟不要太大 int arr[40960] = {0};

严重性 代码 说明 项目 文件 行 禁止显示状态 警告 C6262 函数使用堆叠的 "163840" 字节。请考虑将一些数据移动到堆。 数组 C:\Users\yangcongxiaoyou\Desktop\CppPractice\C初阶\数组\源.cpp 80

太大去堆区

在这里插入图片描述

换算

1Byte(Byte 字节) = 8Bit

1KB (Kilobyte 千字节) = 1024Byte,

1MB (Megabyte,兆字节,简称“兆”) = 1024KB,

1GB (Gigabyte,吉字节,又称“千兆”) = 1024MB,

1TB (Terabyte,太字节,或百万兆字节) = 1024GB,其中1024=2^10 ( 2 的10次方)。

2 二维数组 2.1 二维数组的创建和初始化

二维是行开头

int arr[3][4] = {1,2,3,4,5}; int arr2[3][4] = { {1,2},{3,4},{5} }; double arr1[5][6];

在这里插入图片描述

可以省略行,但不能省略列. (必须知道一行多少个) int arr[][4] = { 1,2,3,4,5 }; 2.2 二维数组的使用

使用[i][j]访问二维数组.

int arr[3][4] = { {1,2},{3,4},{5} }; for (int i = 0; i printf("%d ", arr[i][j]); } printf("\n"); } 1 2 0 0 3 4 0 0 5 0 0 0 2.3 二维数组在内存中的存储 int arr[3][4] = { {1,2},{3,4},{5} }; for (int i = 0; i printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]); } printf("\n"); } &arr[0][0] = 012FFA30 &arr[0][1] = 012FFA34 &arr[0][2] = 012FFA38 &arr[0][3] = 012FFA3C &arr[1][0] = 012FFA40 &arr[1][1] = 012FFA44 &arr[1][2] = 012FFA48 &arr[1][3] = 012FFA4C &arr[2][0] = 012FFA50 &arr[2][1] = 012FFA54 &arr[2][2] = 012FFA58 &arr[2][3] = 012FFA5C

连续存放,对于int,一个元素4bytes. 在这里插入图片描述

3 数组越界 int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; for (i = 0; i int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //int* p = &arr[0]; int* p = arr; for (int i = 0; i 1,2,3,4,5,6,7,8,9,10 }; printf("%p\n", arr); printf("%p\n", arr + 1); printf("%p\n", &arr[0]); printf("%p\n", &arr[0] + 1); printf("%p\n", &arr); printf("%p\n", &arr + 1); 012FFDAC 012FFDB0 012FFDAC 012FFDB0 012FFDAC 012FFDD4 012FFDD4-012FFDAC=40012FFDB0-012FFDAC=4


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有