C语言 数组和指针

数组的简介:

数组:顺序存储类型相同的值;定义: 数据类型 数组名[整形常量表达式] ;我们可以通过数组的下标进行访问数组的元素(数组含有n各元素的下标是从0开始到n-1结束);

const修饰数组的时候将数组设置为只读模式,数组中的值不能有新值的写入数组中;

数组不初始化数组内部的值为垃圾值,部分初始化未初始化的值为0;

数组中的未定义行为:数组下标越界,程序能运行但是结果比较奇怪

指针简介:

指针:一个值为内存地址的变量;指针的变量为地址,保存地址值

Int  a;    int * p; p = &a; p存储int类型变量地址的指针

与地址相关的运算符:

&:在后面跟变量名可以给出变量的地址

*:在后面跟指针或者地址可以给出指针或者地址所指向的值

声明指针变量时必须指定指针所指向变量的类型

指针的基本操作:

赋值:将地址值赋值给指针变量,包括数组名、带地址运算符的变量名、另一个指针进行赋值(地址和指针类型兼容)

解引用:*运算符给出了指针指向地址上所存储的值

取址:&运算符可以给出指针、变量的地址

指针与整数相加、相减:指针和整数相加,整数和指针所指的指针类型大小(字节为单位)相乘再相加初始地址

递增、减指针:保证递增、递减指针指向数组元素(指针有效)

指针和数组

数组名是数组的首地址

int a[10]中,a和&a[0]都代表数组首元素的内存地址

指针加一,指针的值加所指类型的大小

data + 2 == &data[2]

*(data + 2) == data[2]

*data +2 !=  *(data +2)

函数中的传递

值传递:处理一个基本的类型且不需要改变其值。保证数据的完整性不会修改原始数据

地址传递:函数中需要改变该数值使用地址传递;数组只能使用地址传递;地址传递修改原始数据

对形式参数使用const进行修饰:const修饰数组保护数组的数据不被修改(const不是限定原来的数组为常量,而是让函数处理数组的时候视为常量)

在编程的时候如果函数需要改变数组,声明数组形参时则不使用const

编写函数不用修改数组,声明数组的时候最好使用const

猜你喜欢

转载自blog.csdn.net/qq_20599225/article/details/81514394
今日推荐