黑马程序员———C语言 一维数组

------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------

一 数组

1.数组的定义:把具有相同类型的若干个变量按有序的形式组织起来,这些按序排列的同类数据元素的集合。属于构造类型。

2.数组的构成:a.数组元素:构成数组的数据,就是下表变量 

                            b.数组的下标:数组元素位置的一个索引

                            c.数组元素下标的个数。

 3. 分类

 1)按存储内容:a.数值数组:存放数值的 

                                b.字符数组:用来存放单个字符的

                                c.指针数组:存放指针地址的 

                                d.结构数组:存放一个结构体类型的数据

 2)按维度分类:一维数组 二维数组 三维数组


 4.数组元素作为函数参数:

a.把数组元素作为实参使用,也就是一个值传递。

b.把数组名作为函数的形参和实参使用,是一个地址传递。

!!!数组元素作为函数参数和数组名作为函数的实参的不同点:数组元素做函数参数不要求形参也是数组元素,但数组名作函数参数,要求形参和实参都必须是类型相同的数组。

 

 5.数组名作为函数参数的注意点

 a.形参数组的类型要和实参一致。

 b.形参的数组长度可以和实参的数组不一致。

 c.形参数组的长度可以不写。

 d.数组名作为函数参数后,有关数组长度丢失的问题。所有的类型字节都是8.因为C语言规定,不管什么类型的数据,数据的内存地址在内存中占用8个字节。

 

二 一维数组

1.一维数组定义:一个数组里面存储的是基本类型的数据。数组的每个元素都不是一个数组。

 

2.格式:类型说明符 数组名[常量表达式];

      类型说明符:一种基本数据类型,是用来存放数组元素的类型,而不是数组名的类型。

      数组名:用户自定义的数组标示符。

      [常量表达式]:数组长度。

 

3.注意事项

1)数组的长度可以是一个常量,也可以是一个表达式。

2)数组名严格按照标示符的命名规范。

3)数组名不能和其他变量同名。

4)数组的长度不可以是一个变量。

5)数组长度可以使用宏定义。

6) 定义数组的同时可以定义普通变量:int x,y,a[5];

 

4.一维数组的初始化:数组在定义时给数组每一个元素赋予初值。

格式: 类型说明符 数组名[常量表达式]={,.....};

方法:

1)定义的同时初始化

 a.定义的同时完全初始化 int a[3]={1,2,3};  int a[]={1,2,3};长度可不写

 b.定义的同时部分初始化 int a1[3]={1,2}; int a1[3]={[1]=2,[2]=9};其中[1][2]为下标

2)先定义,后初始化(通过下标进行初始化)int a[3]; a[0]=1,a[1]=2....


!!! int len=5;

    int a[len]={1,2,3,4,5}Xcode特有的数组长度可以为变量,但是不允许这样初始化。

!!!如果数组没有初始化,数组元素有值的,是垃圾值。如果进行部分初始化,没有初始化的其他元素被系统自动初始化为0了。字符数组没有被初始化的那部分元素的ASCII值也被系统自动初始化为0了。

!!!使用先定义后初始化的方式,如果部分数组元素被初始化了,系统不会对没有初始化的元素进行自动初始化0了。

 

5.数组的访问(引用):就是对数组元素的访问(printf("%d\n,"a[i]);),要是逐个访问数组的元素,这就叫数组的遍历。使用for循环。

 

6.一维数组的存储方式

a.计算机会给数组分配一块连续的存储空间

b.数组名代表数组的首地址,从首地址位置开始,依次存入数组的第一个,第n个元素。

c.每个元素占用相同的字节数

d.并且元素之间的地址是连续的

 

!!!先分配的存在高地址,后分配的存在低地址

 

7.一维数组的地址用 %p输出

a.通过打印两个数组的地址,证明了先定义的数组分配在高地址。

b.数组各元素之间的地址是连续的,两个元素相差4个字节。

c.数组名和数组的第一个元素的地址是相同的。b=b[0];

 

!!!打印数组名的地址不需要加&符号,打印每一个元素的要加上&符号。

   数组名是一个常量,就是元素的首地址。

 

8.数组元素的下一个地址:根据下标计算下个下标的地址。

  int nums[]={1,2,3};--->nums+sizeof(int)*下标

 

9.一维数组长度的计算  数组的长度=数组占用的总字节数/数组元素占用的字节数

                   len=sizeof(a)/sizeof(int)

 

10.一维数组的越界:访问了不属于你自己的空间,那个空间给其他的变量使用了,如果你访问了,那个空间有可能会改变你空间的值。所以是不安全的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值