我也要学C语言-第九章:“串串香”-数组

Posted on   dodolook  阅读(2523)  评论(46编辑  收藏  举报

一:数组的作用:

  我中午吃了饭就开始学数组了!嘿嘿!我中午吃的“串串香”。这是一种成都很常见的小吃!不过大多数人选择晚上去吃。“串串香”是一根竹签上穿着几个同类型的食物,比如,穿着5个牛肉丁,穿着4个土豆,等等。然后放在有特制香料的锅里煮着吃。很好的吃的!当我学习到数组的时候,我突然感觉数组就是“串串香”啊!几个土豆串在1根竹签上,这样我就可以说,我要这串土豆!然后我就不用说,我要这个土豆,还有这一个土豆,还有这一个。这样的话!我就不用声明那么多次了。直接说一串就好了。呵呵!

二:数组的定义:

  类型说明符    数组名[元素个数]

    土豆   串串香A[100个]

三:数组的特性

  每个土豆都是连续的串在竹签上的。而且你吃的1个土豆有个记号(下标)0、吃的第二个土豆记好(下标)是1,然后依次下去了!为什么第1个土豆下标要用0呢,是因为在数组寻址的时候数组的名字是数组的首地址

  数组名做为函数参数的时候,传递过去的是这个数组的4字节首地址,所以数组名传参时候的副本只记下4字节首地址即可。因为传递的是地址,所以可以修改原数组的值!例如:

复制代码
#include <stdio.h>

void change(int x[])
{
int temp = x[0];
x[
0] = x[1];
x[
1] = temp;

printf(
"数组名的大小为:%d\n", sizeof(x));
}

int main(void)
{
int a[2] = {11, 22};

printf(
"交换前的数组元素为:%d\t%d\n", a[0],a[1]);

change(a);

printf(
"交换后的数组元素为:%d\t%d\n", a[0],a[1]);
printf(
"数组名的大小为:%d\n", sizeof(a));

return (0);
}
/**********************************************
输出结果为:交换前的数组元素为:11 22
数组名的大小为:4
交换后的数组元素为:22 11
数组名的大小为:8
**********************************************
*/
复制代码

四:数组的注意点:

  1:[]括号内的值一定要是个固定的,因为老板(编译器)不知道你要多少个土豆1串的。她就知道怎么给你记账啊!(我暂时这样理解啦!,可能以后会觉得现在的理解是错误的!嘿嘿!);

  2:吃(引用)土豆的时候只能1个1个的吃,不能你说我要吃这一串。

  3:C语言数组可以越界访问!也就是说,当一串土豆只有5个时候,你可以吃6个,第6个你就吃的空气或者其他的什么鬼东西,但是你可以想象成吃的是土豆,呵呵!比如:

  

五:数组的寻址公式:

   a[n] = a + sizeof(type) * n

        a[n]:你所要寻址的数组元素

     a:数组首地址

     sizeof(type):元素的大小

     n:数组下标

六:二维数组:

  二维数组和一维数组是一样的,只是二维数组的每个元素是一个一维数组。在内存中感觉都是一根竹签上的,就相当于把两串“串串香”首尾连接成一串,嘿嘿!

  花了5个小时学习数组终于结束了。我去玩吉他了,你们喜欢玩的吗?玩一会了继续加油!争取1W小时内学会写程序(其实我真真切切是一个刚学几天编程的孩子,大家的误解我想应该是大家当时没有选择好学习资料吧。“没有目的性的学习”也许才会更加的让人集中精力探索事物的本质,因为我觉得好多思维需要在快乐的状态中才能完成!一旦有欲望了!思维上也就局限了。至少在音乐上是这样的)!

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示