指针和数组

指针:
 指针在本质上是一个变量;指针需要占用一定的内存空间;指针用于保存内存地址的值
*号的意义:
 在指针声明时,*号表示所声明的变量为指针;
 在指针使用时,*号表示取指针所指向的内存空间中的值 ;
 char *p <==> (char *)p //前面的数据类型是修饰指针指向的空间大小,在32位机器中,指针大小为4字节

成都创新互联公司专业为企业提供庆元网站建设、庆元做网站、庆元网站设计、庆元网站制作等企业网站建设、网页设计与制作、庆元企业网站模板建站服务,10年庆元做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

指针和数组

传值调用与传址调用:
 指针是变量,因此可以声明指针参数
 当一个函数体内部需要改变实参的值,则需要使用指针参数
 函数调用时实参值将复制到形参
 指针适用于复杂数据类型作为参数的函数中

数组:
 相同类型的变量的有序集合

指针和数组
数组的大小:数组在一片连续的内存空间中存储元素,数组元素的个数可以显示或隐式指定
 Int a[5] = {1,2};
 Int b[] = {1,2};
数组地址与数组名:
 数组名代表数组首元素的地址(a);
 数组的地址需要用取地址符&才能得到(&a);
 数组首元素的地址值与数组的地址值相同
 数组首元素的地址与数组的地址是两个不同的概念
数组名的盲点:
 数组名可以看做一个常量指针;
 数组名“指向”的是内存中数组首元素的起始位置;
 在表达式中数组名只能作为右值使用下
 下列场合中数组名不能看做常量指针:
  数组名作为sizeof操作符的参数;数组名作为&运算符的参数

变量含义
a a为数组首元素的地址;a + 1 <==>(unsigned int)a + sizeof(*a)
&a &a为整个数组的地址; &a + 1 <==>(unsigned int)(&a) + sizeof(*&a)

数组与指针分析 :
 数组的本质:
  数组是一段连续的内存空间;
  空间大小为sizeof(array_type)* array_size;
  数组名可看做指向数组第一个元素的常量指针
 指针的运算 :
指针和数组
 数组的访问形式:

指针和数组
 数组参数:
  数组作为函数参数时,编译器将其编译成对应的指针;
  一般情况下,当定义的函数中有数组参数时,需要定义另一个参数来标示数组的大小

void f(int a[]);  ==>void f(int* a);
void f(int a[5]); ==>void f(int* a);  

 指针和数组的对比:

指针和数组

C语言中的字符串:
指针和数组
指针数组和数组指针分析:
 定义数组类型:

指针和数组

指针和数组

 main函数的参数:
  main函数可以理解为操作系统调用的函数;在执行程序的时候可以向main函数传递参数

指针和数组
多维数组和多维指针:
 指向指针的指针:
  指针变量在内存中会占用一定的空间;可以定义指针来保存指针变量的地址值

 二维数组与二级指针:

指针和数组
数组参数和指针参数分析:
 C语言中的数组参数会退化为指针:
 二维数组参数:

指针和数组
指针和数组
 c语言中无法向一个函数传递任意的多维数组;
 为了提供正确的指针运算,必须提供除第一维之外的所有维长度限制:
  一维数组参数 – 必须提供一个标示数组结束位置的长度信息
  二维数组参数 – 不能直接传递给函数
  三维或更多维数组参数 – 无法使用
函数与指针分析:
指针和数组


标题名称:指针和数组
文章转载:http://pwwzsj.com/article/pdeecj.html