数组实际上就是一组相同数据类型变量。
在使用数组以前需要定义一个数组。
C语言中数组的下标从0开始(不同于MATLAB中的1)访问不存在的数组变量时,程序就会发生溢出错误。
在本质上,数组是内存上一组同类信息列出的一个表。
4.1.2 数组的定义和访问
数组的定义,指的是在内存中开辟一块存储空间,生成一个空数组。
如:int a [10], float f [20], char s [5]
也可以不指定变量的个数,如: char a [];
c语言NULL和0区别:http://blog.csdn.net/shisiye15/article/details/7827689
一定要注意!!!!!!:printf和Printf----一个大小写,浪费了30分钟,一定要注意大小写,但与此同时也重新温习了C语言程序的编译和调试。
4.2指针
指针是一种特殊的数据类型,
用来存储一个变量的地址。
通过一个指针,可以
访问这个
指针所指向的变量。
程序中的变量都是以
字节的形式存储在
内存单元中。这些内存单元都有一个
编号,这个
编号就是程序中的指针。
4.2.2 指针操作符
指针操作符有
*与
&两个,分别实现
取变量和
取地址的操作。
&可以实现
取一个变量的地址的功能。
例子1:
int *p; 定义一个指针变量
int i=5; 定义一个整形变量
p=&i; 取变量i的地址赋值给p
例子2
int *p; 定义一个指针变量
int i=5, j; 定义整形变量
p=&i; 取变量i的地址赋值给p
j=*p; 取指针p所指向变量值给变量j
4.2.3 指针的定义与访问
定义指针变量时,需要考虑到
这个指针所指向变量的数据类型。
定义指针的方法,是在变量前面加一个“
*”。
如: int *p1 ; char *p2; float *p3;
在程序中,
常常通过指针来访问一个变量的值。
4.2.4 指针使用实例
中间指针变量交换两个指针变量的值。
4.3 数组与指针
除了可以用
下标访问数组元素外,也可以用
数组的指针访问数据变量。
4.3.1 数组与指针的关系
定义一个数组的时候,就是定义这个数组的
头指针,然后分配若干存储单元。
定义的数组名称是可以直接赋值给一个指针的,并且这个指针可以指向这个数组的第一个元素。
4.3.2 指针的算术运算
指针可以做
加法和
减法运算。相当于指针的位置从这一位置向后或向前移动若干个
单元。此处的单元,指的是可以存储相应的变量的
内存空间。
不一定是多少个字节。
4.3.3 字符数组与字符串
字符数组是一种特殊的数组。
'\0'要注意。
4.4 二维数组与多维数组
4.4.2 二维数组与指针
q=p+(行数*总列数)+列数
数组可以在程序中实现数据存储。
冒泡法排序实例:---C语言中的经典算法。
统计字符串中字符------ASCII码------每一个ASCII码在内存中占据
一个字节。
小写字母转换成大写字母-----一个小写字母的ASCII码减去
32,就是相应的大写字母。
指针访问数组
4.6 常见问题
指针可以
对内存进行读写操作。----会造成内存数据的错误。---
当对指针进行写操作时,错误的操作可以破坏内存中其他程序的数据。
在使用指针时,需要牢记,
不可以随意向不确定的内存单元写入数据。
定义一个指针后,必须对其进行正确的赋值。
错误2:错误地将一个数据直接赋值给一个指针变量。
错误3:数组指针的越界错误
小节:数组与指针的知识是
C程序中的重要内容。
需要建立起直观形象的空间概念。