码迷,mamicode.com
首页 > 编程语言 > 详细

C语言-->(十一)指针于数组

时间:2015-02-27 22:50:18      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

知识点:
• 指针与变量 (指向变量的指针)
• 指针与函数 (地址传递)
• 指针与数组 (指向数组的指针)
• 指针与字符串

=================================
数组的指针

1.什么是数组指针
1)数组的指针是指数组在内存的的起始位置
2)数组的第一个元素和数组的起始地址一致

2.数组名的本质
1)数组名本质上是一个地址常量,代表的是数组的首地址也就是第一个元素的地址

数组名表示表示数组的起始地址,不表示整个数组,不能对数组整体赋值。

3.数组名为一个指针常量,可以当作一个指针来使用
有起始地址和下标可以计算对应的元素地址

4.数组的另外一种访问方式
eg:
1)回忆数组的下标访问特定元素
2)如何通过指针方式打印指定元素
3.交换第一个元素和最后一个元素的值
练习:
1.通过循环遍历出所有的元素
2.通过scanf对所有元素进行赋值

==============================
指向数组的 指针变量

1.什么是指向数组的指针
保存数组地址的指针变量
2.声明方式
1)指向一维数组的指针

3.指向数组的指针变量本质
1>本质仍然为一个变量,保存一个变量的指针,只不过现在保存的是一个数组的首地址

4 .如何通过指向数组的指针变量来操作数组
1)如何获取元素
1>两种方式:下标法,指针运算法
下标法:和数组使用方式一样,着重了解指针和数组的操作类似
指针运算法:通过对首地址的偏移实现

5.指针运算
指针变量和普通变量一样可以执行+-*/四则运算,+-表示所指向的位置向左右移动,*/没有意义。

 

1).指针变量的加减操作
思考:指针+1后加了多少
练习:声明一个指向char的指针,输出+1后的地址

2).思考:*(p+1)和*p+1的区别

3).指针的关系运算

4).思考:
指向数组的指针的算术运算才有意义表示什么? 单独的指针运算是否有意义?

5).数组名和指针变量的区别
1>数组的名称是数组的首地址,一旦数组确立,其地址是固定不变的
2>指针变量则是一个拥有内存空间的变量,可以反复赋值

可以通过数组指针++ -- 偏移指向数组的指针变量遍历数组

练习:
1.通过指向数组的指针完成元素的遍历(两种方式都要) 5
2.通过scanf对所有的元素进行赋值操作
3.通过指向数组的指针计算数组所有元素的和

6.作用
1)指向数组的指针一般出现在函数参数中,用来表示接收数组实参数

 

==============================
数组参数
实现一个遍历数组的函数模块

1.数组参数的表示方式
sizeof(a)/sizeof(a[0])

1)普通数组的形式func(int a[5]); // func(int a[]);
2)指针的形式 func(int *a)

2.思考:能否直接在函数内求出数组的大小,如果不能,请说明
func(int a[5]);


3.数组作为参数传递
1)本质
当数组作为参数传递时,是以地址方式进行传递
思考:地址传递意味这什么?
2)原因
减少无用的数据拷贝
3)完整的参数列表
1>要接收的数组类型
2>接收数组的长度大小,这个必须由调用者传递
练习:
1.设计一个函数,将一个数组的内容填写至另一个数组
void copy_arr(int *a1, int *a2, int len); 5
以下练习均以指针操作


============================
指针与字符串
1>如何通过指针变量引用一个字符串
2>通过此种引用方式的特点

 

1.指向字符数组的指针
1)指向一个字符数组
练习:以下练习均以指针完成
1>编写一个函数,使用指针将字符串中的大写改为小写
2>编写一个函数,使用指针统计字符个数

2.指针指向的字符串

2)字符串常量
1>能否直接修改元素的内容
2>修改后的结果
3>本质:指针直接引用的字符串为一个常量,称为字符串常量
 

 

C语言-->(十一)指针于数组

标签:

原文地址:http://www.cnblogs.com/iOSteemo/p/4304478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!