本末节重要介绍进修数据构造应当有的基本,并对相干常识稍作讲解。
- 指针
- 指针是 C说话 的魂魄,重要性不需多言。
- 指针定义
地址:
- 地址是内存单位的编号
- 其编号是大年夜 0 开端的非负整数
- 范围: 0 – 0xFFFFFFFF (232 - 1) 注:此指x86平台,x64平台下最大年夜内存地址为 (264 - 1)
指针:
- 指针就是地址,地址就是指针。
- 指针变量是存放内存单位地址的变量,它内部保存的值是对应的地址,地址就是内存单位的编号(如内存地址值:0xffc0)。
- 指针的本质是一个操作受限的非负整数
指针的分类
根本类型的指针
- int i = 10; // 定义一个 整形变量 i 初始值 10
- int *p = i; // 定义一个 整形的指针变量 p , 变量 p 指向 i 的地址
- int *p; // 这两行等价于膳绫擎一行
- p = &i;
p 存放了 i 的地址,我们就可以说“ p 指向了 i” ,但 p 和 i 是两个不合的变量,修改仪榭龌会影响另一个的值。
*p 等价于 i ,i 等价于 *p;两者是一块内存空间,琅绫擎的值一变具变。
指针和函数
- // 修改外部实参的值
- void func(int * p)
- {
- *p = 100; // 函数内修改外部变量的值
- }
- // 修改外部实参的值,二级指针的值
- void func2(int ** p)
- {
- *p = 100;
- // 函数内修改外部变量的值 ,这诚实际修改的是指针的内部的地址,这里直接本身修改并不严谨也不安然,只是为了表达意思
- }
- int main(void)
- {
- // 修改外部实参
- int i = 10;
- func(&i);
- printf(“i = %d”,i);
- // 修改外部二级指针
- int *p = i; // 等价于 int *p; p = &i;
- func(&p);
- printf(“i = %d”,i);
- return 0;
- }
- // 经由过程函数调用,改变函数外部变量(实参)的值
指针和数组
【指针】 和 【一维数组】
- int a[5] = {1,2,3,4,5 };
- a[3] == *(a + 3)
- // 等价于 a[3] == *(3 + a) == 3[a];
- // 3[a] 这种写法只是不常用,大年夜道理上来说是精确的 a 等价于 a[0];
- // a 是数组中第一个元素,每个元素占用内存单位长度雷同,
- // a[i] 中的 i 实际代表的是单位长度的倍数
数组名:
一维数组名是个指针常量(它的值弗成变)
它存放的是该一维数组的第一个元素的地址(一维数组名指向其第一个元素)
下标和指针的关系:
(1)、 a[i] 等价于 *(a + i)
(2)、假设指针变量的名字为 p,
(3)、每个下标表示的是第 i+1 个元素,根据元素类型分派的字节长度不合(int 类型4个字节),每个字节都有对应的内存地址编号,指针变量 p 保存的是该元素首字节的地址。
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散日前,中国银联联袂贸易银行、付出机构等家当各方合营宣布银行业同一APP“云闪付”。 大年夜家经由过程这一APP即可绑定和治>>>详细阅读
本文标题:带你了解数据结构的定义和简介
地址:http://www.17bianji.com/lsqh/39702.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示