5.数组与指针

数组的概念

数组是有序的数据集合  属于构造数据类型 要求足足中的每一个数据元素类型相同  维数可划分为1维和多维数组

一维数组

在物理空间分配上 系统在内存中为一维数组分配一段连续的空间

定义  类型说明符 数组名 [常量表达式]

对于数组类型说明要注意一下几点:

1.数组的类型实际上是指数组原属的取值类型。同一个数组的所有元素的数据类型都是相同的。

2.在编写程序时,数组名的书写规则应符合标识符的书写规定。

3.编写程序时,数组名不能与其他变量名相同。

4.方括号中常量的表达式表示数组元素的个数。

5.不能再方括号中用遍了来表示元素的个数。

一维数组的元素  数组名[下标]  从0开始  a[5]为第6个元素

注意一点 在c语言中只能一个一个的引用数组变量 而不能一次引用整个数组

定义数组时不能再方括号中用变量来表示元素的个数,但可以是符号常数或常量表达式。而引用数组元素时,方括号中既可以是常量、常量表达式、字符常数、又可以是变量、不过变量的值一定是确定的。

一维数组的初始化

1.可以只对数组元素部分初始化  int a[10]={1,3,5}

2.数组的一次性赋0  int a[10]={0}

3.可以不指定数组长度  int a[]={1,2,3,4,5}

二维数组

定义 类型说明符 数组名[常量表达式1][常量表达式2]

二维数组的初始化

1.按行分段赋值

2.按行连续赋值

对二维数组进行初始化时有以下几点需要注意:

1.可以对部分元素赋初值 未赋初值的元素自动取0

2.如果对全部元素赋初值,则第一维的长度可以不给出 int a[][3]={1,2,3,4,5,6,7,8,9}

指针的概念

使用指针可以表示复杂的数据结构 不需要命名就能够动态分配内存 还可以直接处理内存地址

内存的地址

内存单元的编号叫做内存的地址

内存是一个连续的物理空间 被划分为大小相等的内存单元 没个内存单元都分配一个固定的内存地址 内存地址也是连续的

程序中给出的地址往往只是内存的逻辑地址 还要通过操作系统的内存管理机制将逻辑地址映射为物理地址

指针和指针变量

指针就是内存的地址  是地址 是内存单元的编号  而内存单元的内容是存放在内存单元中的具体数据

C语言中可以用一个变量来存放指针(内存地址) 这种变量叫做指针变量  只是内存地址而已~~

严格区分 变量  变量的指针 变量的内容 指针变量 指针变量的内容=是地址

指针型变量的定义

1.指针类型说明 即定义该变量为一个指针变量 用*说明

2.指针变量名

3.指针变量的类型

一般类型  类型说明符 *指针变量名

指针型变量的引用

引用的方法  int *ptr,i;ptr=&i;将i的指针&i赋值给指针变量ptr

*叫做指针运算符 作用有2点:一是定义指针变量时作指针类型说明 表明定义的变量时指针型变量

二是用于直接访问指针变量所指向的内存单元

1.指针变量初始化方法

int a;

int *p=&a;这里一定要有*

在定义指针型变量p的同时将整形变量a的地址&a赋值给p

2.赋值语句的方法

int a;

int *p;

p=&a;

使用指针变量时 咬住运算符& 和*的使用顺序 顺序不同 所表达的意思也可能不同 他们优先级相同 自右而左结合

int *p,i=1,*q;

p=&i;

q=&*p;  //=&i=i的地址

int i=2,j;

j=*&i;  //吧i的内容赋值给j

指针作为函数参数

引入  实参-->形参  只是值传递  子函数中形参值的变量不影响主函数中实参的值!!

指针变量的函数参数 

作用是将一个变量的地址传递给被调函数 这样就可以在被调函数中通过指针(地址)操纵主调函数中的变量了

被调函数定义的参数表列中参数一定是定义指针变量的形式 即形参一定是定义指针变量的形式

void swap(int *a,int *b)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

指向数组元素的指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值