zoukankan      html  css  js  c++  java
  • 数组与指针

    列出全部数组元素初始值,下标括号中可以不指定数组长度。

    二维数组:只写a[0]:表示0行首地址,a[1]:表示1行首地址

    大括号包大括号,分组后,可以给各个行的前若干个元素赋初始值

    当二维数组列出了所有初始值,第一维的下标个数可以不写

    数组初始化:如果不作任何初始化,局部作用域的非静态数组中会存在垃圾数据(不可靠,不可使用),static数组中的任何数据默认初始化为零;只对部分元素初始化,剩下的未初始化的元素将自动初始化为0.

    传地址,传数组名,实际操纵原函数。

    对象数组:数组中存放的是同一类型的对象,访问对象的成员函数——对象数组名[下标].成员名      //实质是拿类定义了一个对象数组,多加一个功能,可以像数组一样通过下标访问。

    范围for循环:自动遍历整个容器,不用管元素个数有多少,会自动去计算出循环次数来,处理容器类更有用,会依次处理全部数据。

    指针变量是专门用来存放地址的变量,内部存放的是另外一个变量的地址,地址必须是在程序运行期间合法获得的。

    定义指针时还必须说明其指向对象是什么类型,通过指针访问对象,拿到起始单元地址,从中取数据时,要根据指针类型,确定连续取多少字节。

    指针运算是寻址过程,以指针变量里容纳的内容作为地址,按这个地址去找到所指向的内存单元。实质是去访问指针所指向的内存单元。

    void类型指针:没有规定指向对象的类型是什么,所以只能用于存放地址,不能用来访问,因为不知道数据类型,不知道要访问几个字节

    想用void类型指针,可以进行强制类型转换:void *pv; int i=5; pv=&i;int *pint=static_cast<int*>(pv) //void 指针转换为int指针

    指针指向连续存储的同类型数据时,指针与整数的加减和自增自减运算才有意义。

    -----------------------------------------------------------------------------

    *(pa+1)就是a[1];原因:pa中存放的是a的首地址,因为pa指针也有类型,且和a类型相同,所以pa+1实际带有类型,再解引用,即去到这个地址所指向的内存单元

    二维数组:*(a+i)——是一维数组,二维数组实质是一维数组中每个元素都是一维数组,*(*(a+i)+j)找到一维数组a[0],a[1],a[2]后,a[0]这个值中还包括a[0],a[1],a[2],后面的j就是再确定要这几个中的哪个,解引用,去到相应地址所指的内存单元。

    ------------------------------------------------------------------------------

    数组元素的类型是指针:就叫指针数组

    存放若干行长短不一的信息,用二维数组不方便,二维数组每一行的列长度是一样的。

    一维数组的数组名就是一维数组的首地址,指针数组的每个元素是指针,用一维数组数组名初始化指针数组,这个指针数组的数组名可以充当二维数组的数组名使用。

    指针数组实现的二维数组和实际的二维数组差别是:指针数组行与行之间不一定连续,如下图,实际二维数组前后必定相连,指针数组内存地址之间不一定非要连续。

    浮点数的值都是近似,类似输入1.02,实际系统可能选择1.02000003,所以不要用两个浮点数进行比较,可以两者作差,然后规定小于10的负几次方为相等

    变量的值作为参数:单向传递

    内存地址作为实参传给形参,形参是指针,表面上操纵形参,实质是操纵实参的值

    指针类型的函数:函数的返回值是指针

  • 相关阅读:
    51nod 1380 夹克老爷的逢三抽一 堆 脑洞题
    洛谷P2168 荷马史诗 堆 哈夫曼树
    HDU 4343 Interval query 倍增思想, DP
    洛谷P1969 积木大赛 贪心 差分
    codves1052 地鼠游戏 贪心
    hdu6031 Innumerable Ancestors
    Codeforces 278C Learning Languages(并查集) 求连通块
    [LeetCode]80. Remove Duplicates from Sorted Array II删除数组中的重复值
    [LeetCode]86. Partition List分离链表
    [LeetCode]42. Trapping Rain Water雨水填坑
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9555384.html
Copyright © 2011-2022 走看看