指针和数组-创新互联

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

创新互联-专业网站定制、快速模板网站建设、高性价比海湖新网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式海湖新网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖海湖新地区。费用合理售后完善,十余年实体公司更值得信赖。

指针和数组

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

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

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

变量 含义
aa为数组首元素的地址;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语言中无法向一个函数传递任意的多维数组;
 为了提供正确的指针运算,必须提供除第一维之外的所有维长度限制:
  一维数组参数 – 必须提供一个标示数组结束位置的长度信息
  二维数组参数 – 不能直接传递给函数
  三维或更多维数组参数 – 无法使用
函数与指针分析:
指针和数组

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:指针和数组-创新互联
链接分享:http://hbruida.cn/article/pcieo.html