CSDN话题挑战赛第2期
参赛话题:学习笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
目录
一.一维数组的创建和初始化
数组的创建
数组是一组相同类型元素的集合。数组的创建方式∶
例子:
注意:数组创建中,[ ]中要给一个常量才可以,不可以使用变量。
数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。看代码:
数组的不完全初始化
不完全初始化就是开辟的空间多了,而多余的部分就默认是0,就如上图所示,比如:
总结
- 数组是使用下标来访问的,下标从0开始。
- 数组的大小可以通过计算得到。
二.sizeof和strlen两个函数的区别
- strlen和sizeof没有什么关联。
- strlen是求字符串长度的,只能针对字符串求长度,是库函数需要引用头文件#include<string.h>。
- sizeof计算变量、数组、类型的大小,单位是字节,属于操作符不需要引用特别的头文件。
再举个例子:
解释一下随机值:字符串是以'\0'为结束符,strlen就是找'\0',找到就输出,而上图中arr2没有字符‘\0’,所以strlen会输出什么值完全就会随机。
三.一维数组在内存中的存储
看代码:
#include<stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int sz=sizeof(a)/sizeof(a[0]);//求出数组a的元素个数
for(int i=0;i<sz;i++)
{
printf("&a[%d]的地址是%p\n",i,&a[i]);
}
}
输出结果是:
因为数组里面保存的是int整型,int是4个字节
仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。由此可以得出结论∶数组在内存中是连续存放的。
四.二维数组的创建和初始化
二维数组的创建
二维数组的初始化
用图来加深一些理解:
同样二维数组也会有不完全初始化的情况,那么他就是按顺序依次存储,如下图:
关于二维数组还有一种初始化方法,就是可以具体某一行存储哪些内容,具体如下:
注意:
一维数组中的[ ]中就可以省略,二维数组中[ ][ ]就只有第二个也就是行可以省略。
五.二维数组的使用
二维数组的使用也是通过下标的方式,比如:
用代码看看:
#include<stdio.h>
int main()
{
int a[3][4]={{1,2},{3,4,5,6}};
for (int i=0;i<3;i++)//3行
{
for(int j=0;j<4;j++)//4列
{
printf("%d ",a[i][j]);
}
printf("\n");//每输出一行就换行
}
}
运行结果是:
六.二维数组在内存中的存储
我们像一维数组那样将其地址打印出来看看
看到结果很明显,其实在二维数组内存中的存储也是连续的
本文含有隐藏内容,请 开通VIP 后查看