c++中指针和数组的区别

xiaoxiao2021-02-28  167

指针和数组: 很多人认为指针和数组基本相同,但其实不然,指针和数组的区别在于: 1、指针:是保存数据的地址,如果要访问数据,首先取得指针的内容,把它作为地址,然后从这个地址提取数据,如果指针有个下标[i],就是把指针的内容加上i作为地址,然后从中取出数据;如下例: char *p= “abcdefgh”  c = p[i]; 编译器符号表有一个p,地址为4567: 运行步骤1:取出p地址4567中的内容,即5081 运行步骤2:取出i的值,将其和5081相加; 运行步骤3:取出(5081+i)中的内容 2、数组:是保存数据,直接访问数据,a[i]就是简单地以a+i为地址去取得数据;如下例: char a[9] = “abcdefgh”,c=a[i];  数组中数组名被编译器当作指向第一个元素的指针; 编译器符号a具有一个地址9980: 运行步骤1:取i的值,将它与9980相加; 运行步骤2:取出地址(9980+i)的内容; 除了上述区别外,还有: ------------------------------------------------------------------------------------------------------------ 指针                                          |       数组 通常用于动态数据结构          |       通常用于存储固定数目且数据类型相同的数据 通常指向匿名数据                  |       自身即为数据名 使用 malloc 和 free 函数           |       隐式分配和删除 ------------------------------------------------------------------------------------------------------------ 指针和数组在以下情况下是相同的: 1、表达式中的数组名被编译器当成指向该数组第一个元素指针; 2、在函数参数的声明中,数组名被编译器当作指向该数组的第一个元素的指针; 在表达式中数组和指针是可以互换的,他们在编译器里的最终形式都为指针 ;
转载请注明原文地址: https://www.6miu.com/read-30805.html

最新回复(0)