学习目标:
了解和明白一维数组,二维数组,知道其元素内容和原理
学习内容:
一维数组,二维数组求地址,大小,元素的应用
代码:
一维数组:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
int arr[10] = { 0 };
printf("%d\n", arr[0]);
return 0;
}//单个调用
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);
return 0;
}//计算有几个数组元素
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int c = 0;
for (c = 0; c < i; c++)
{
printf("%d\t", arr[c]);
}
return 0;
}//输出整个数组中的数组元素
int main(void)
{
int arr[10];
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int c = 0;
for (c = 0; c < i; c++)
{
printf("%d\t", arr[c]);
}
return 0;
}//计算机自定义赋值
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int c = 0;
for (c = 0; c < i; c++)
{
if (c == 6)
{
arr[c] = 7;
}
printf("%d\t", arr[c]);
}
return 0;
}//单个值
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int c = 0;
for (c = 0; c < i; c++)
{
if (c > 0)
{
arr[c] = arr[c - 1] + 1;
printf("%d\t", arr[c]);
}
else
{
arr[c]++;
printf("%d\t", arr[c]);
}
}
return 0;
}//每个数组元素++
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int c = 0;
for (c = 0; c < i; c++)
{
printf("%p\n", &arr[c]);
}
return 0;
}//计算16进制位置,注意32位和64位地址大小不同
int main(void)
{
int arr[10] = { 0 };
int i = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", i);//计算有几个数组元素
int* p = &arr[0];
int c = 0;
for (c = 0; c < i; c++)
{
printf("%p = %p\n", p, &arr[c]);
}
return 0;
}//计算16进制位置,注意32位和64位地址大小不同
int main(void)
{
printf("%d\n", 0x16);//计算
printf("%x\n", 0x16);//直接打印
printf("%p\n", 0x16);//16进制位完全打印
return 0;
}//不同变化
二维数组:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
int arr[3][4] = { 0 };//数组元素是以下标来访问的,这是重点,3,4表示这个数组是3行4列,访问时还是从0开始
printf("%d\n", arr[0][1]);
return 0;
}//访问单个数组元素
int main(void)
{
int arr[][4] = { {1,2} ,{3,4} ,{5,6} };
int h = sizeof(arr) / sizeof(arr[0]);
int g = sizeof(arr) / sizeof(arr[0][0]);
printf("%d\n", h);//计算几行
printf("%d\n", g);//计算有几个数据元素
return 0;
}//计算
int main(void)
{
int arr[3][4] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
return 0;
}//打印数组元素
int main(void)
{
int arr[][4] = { {1,2} ,{3,4} ,{5,6} };
int h = sizeof(arr) / sizeof(arr[0]);
int g = sizeof(arr) / sizeof(arr[0][0]);
printf("%d\n", h);//计算几行
printf("%d\n", g);//计算有几个数据元素
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("%d\t", arr[i][j]);//打印出每一数据元素
}
printf("\n");
}
return 0;
}//运用
int main(void)
{
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
//数组元素是以下标来访问的,这是重点,3,4表示这个数组是3行4列,访问时还是从0开始,3*4表示有12个数组元素
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("arr[%d][%d]=%d\t", i, j, arr[i][j]);
}
printf("\n");
}
return 0;
}//数组下标
int main(void)
{
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
//数组元素是以下标来访问的,这是重点,3,4表示这个数组是3行4列,访问时还是从0开始,3*4表示有12个数组元素
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
printf("arr[%d][%d]=%p\t", i, j, &arr[i][j]);
}
printf("\n");
}
return 0;
}//地址计算
int main(void)
{
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
//数组元素是以下标来访问的,这是重点,3,4表示这个数组是3行4列,访问时还是从0开始,3*4表示有12个数组元素
int* p = &arr[0][0];
int i = 0;
for (i = 0; i < 12; i++)
{
printf("%d = %d = %p\n", i, *p, p);
(*p)++;
}
return 0;
}//数组地址连续指针访问
学习时间:
初阶基础知识点,但由于内容较多,知识点很多,内容杂乱,坑也不少,所以相应时间也不少,所以根据人群和理解程度时间也不同
学习产出:
数组相关总结,数组指针指向,笔记记录,博客整理,数组理解和运用计算,代码和指针练习
相关总结:
作为一个合格的程序员,我们应该有一个良好的书写习惯,最好应当赋初值
每种数据类型的数组所占元素空间的大小和元素都不同
数组名其实就是数组的地址,数组的首地址其实就是数组的起始地址,也就是数组的第一个元素
数组[]内所给的值是我们向内存中申请的空间的大小,注意不要越界访问,不然就是非法访问内存
数组是通过下标来访问的
...
以及其它很多注意的地方