// 指针1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。...//键盘输入两个数,用指针将两个数输出 群:970353786 #include int main() { int a, b;//定义变量 int* p1, * p2;//声明指针变量 printf_s...("请输入两个数字,中间记得逗号隔开:"); scanf_s("%d,%d", &a, &b);//输入两个数 p1 = &a;//将地址赋给指针变量,或者理解为,p1取a的地址 p2 = &b;...p,q; p=&q; printf("please input��"); scanf("%d",p); printf("number is��%d",q); return 0; } // 指针
一、字符指针变量 通过之前的学习,我们了解了指针,int*是整型指针,指向的是整型;那么,指向字符型的指针就是字符指针,即char* #include int main() { char...有了对字符指针的理解,看以下代码: #include int main() { char str1[] = "hello world"; char str2[] = "hello...二、数组指针 在之前的学习中,我们学习到了指针数组,知道指针数组是存放指针变量的数组。 之前还学到整型指针变量,存放的是整型变量的地址,它所指向的是一个整形变量。...数组指针变量的初始化 定义数组指针变量以后,那该怎么初始化与赋值呢?在学习指针(2)中数组名的理解,我们知道&数组名取的是整个数组的地址,那么这里就可以讲数组的地址赋值给数组指针变量。...三、函数指针 函数指针变量 之前我们学习过数组指针,它是一个存放数组的地址的指针。
我们首先从思维导图切入,大致理解指针这一章的思维与框架: 基本概念的理解 内存和地址 我们都知道电脑在运行时,需要将内存加载到cpu中,等待运行完毕后,又返回到cpu当中,那么,cpu是如何快速找到地址的呢...指针的运算 指针的类型决定了指针向前一步或者向后一步有多大。 指针加减整数 指针加减整数就跳到对应的数值上。...野指针 何为野指针:野指针即为指针指向位置不可知,不正确的,没有限制的。...&a是数组的地址,数组的地址也是地址,大小是4/8个字节 8.有两种理解方式①*和&抵消, ②将整个数组的地址取出来再解引用,得到的就是整个数组。int(*)[4] 9....p加0还是a的地址,解引用得到a,一个字节 ②当作数组理解,把常量字符串想象成数组,p可以理解成数组名。p[0]就是首元素。 5.
一、数组名的理解 一维数组 通过之前的学习,我们知道了可以通过&arr[0](取地址操作)来取得数组首元素的地址,但是,数组名其实本来就表示数组首元素的地址 int main(...二维数组的理解: 把二维数组的每一行理解成一个一维数组,arr[0]就是第一行这个数组的数组名这样,二维数组里就存放着几个一维数组,二维数组的首元素就是第一行这个数组arr[0]。 ...我们知道,一个整形数组,存放的都是整型数组;一个字符数组,存放的都是字符; 那存放指针类型的数组,其实就是指针数组。...指针数组中每一个元素都是地址,又可以指向一块内存。...对于二维数组,用指针数组也可以来实现二维数组,但是指针数组中每个元素所指向的一维数组不是连续的。
一、内存和指针 1、内存与地址 举个例子,一栋大楼中有许多个房间,如果想要快速的找到一个房间,就需要知道这个 房间的门牌号,这个门牌号就可以理解成这个房间的地址...:二级指针 二级指针:存放一级指针地址的变量。...void*指针 void是一个泛型指针,它可以接受任何类型的指针,但是不能进行指针运算和解引用操作。...指针-指针 指针-指针的绝对值是两个指针之间的元素个数。 前提:两个指针指向同一块内存空间。...六、野指针 野指针形成原因 1.指针没有初始化 int* p; *p=20; 规避:初始化指针;不知道指针该指向哪里,就给指针赋值NULL(空指针)。
this是javascript的一个关键字,也是比较容易令人迷糊的一个概念 this的本质:当前对象的所有者 示例1 var x = 1; function t...
图解 指针数组,重点在数组 数组指针,重点在指针 例子: include ...大小:一个int型指针长度的空间 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 ...,亦称行指针。...指针数组 定义 int *p[n]; []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。...数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
include int main() { const char* str = "hello world";//把"hello world"的首元素的地址给了str //但是不能单纯的理解为数组...可以这么理解:str1和str2是可以修改数组中的元素的,如果不同数组间的修改会相互影响,那岂不是乱遭了。而str3和str4是不可以被修改的,那么让它们两指向同一块空间也是完全没有问题的。...11.1 一维数组传参 #include void test(int arr[])//可行,最容易理解的写法([]内的数字可以随便写,不影响系统的判断)该传参的本质就是int* arr...{} void test(int arr[10])//可行,最容易理解的写法。...); return 0; } 11.2 二维数组传参 #include void test(int arr[3][5])//可行,最容易理解的写法 {} void test(int
int a1,a2,a3; p[0]=&a1; p[1]=&a2; p[2]=&a3; 在理解: 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组...如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。...,亦称行指针。...指针数组 定义 int *p[n]; []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。...这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
解引用 return 0; } 二、指针和指针变量 指针:地址 指针变量:变量-存放地址 指针变量用来存放地址的,指针变量并不完全等同指针...2.32位平台下地址是32个bit,指针变量的大小是4个字节 64位平台下地址是64个bit,指针变量的大小是8个字节 三、如何理解地址: 计算机中硬件单元要互相协同工作(协同:互相进行数据传递...可以简单理解为:32位的机器就有32根地址总线,每根线只有两态, 表示0,1[电脉冲有无],那么一根线就能表示2中含义,2根线就能有4种含义。...四、指针类型的意义(为什么不用ptr_t p代表所有指针) 1.指针解引用的时候有多大权限 (如果一个指针代替所有的话,解引用时的字节与变量定义类型不同) 2.指针类型决定了指针向前或向后走一步有多大...指针未初始化 2.指针越界访问造成野指针 3.指针指向的空间释放 1.
但是指针变量本⾝的内容可变。 • const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指 向的内容,可以通过指针改变。 5....指针运算 指针的基本运算有三种,分别是: • 指针+- 整数 • 指针-指针 • 指针的关系运算 5.1 指针+- 整数 因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸瓜就能找到后⾯的所有元素...野指针 概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的) 6.1 野指针成因 1. 指针未初始化 2. 指针越界访问 3....指针指向的空间释放 6.2 如何规避野指针 6.2.1 指针初始化 如果明确知道指针指向哪⾥就直接赋值地址,如果不知道指针应该指向哪⾥,可以给指针赋值NULL. ...6.2.3 指针变量不再使用时,及时置NULL,指针使用之前检查有效性 当指针变量指向⼀块区域的时候,我们可以通过指针访问该区域,后期不再使⽤这个指针访问空间的 时候,我们可以把该指针置为NULL。
数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码: int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int *p = &arr[0]; 这⾥我们使用...数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢? 输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。...二级指针 指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里? 这就是二级指针 。...指针数组 指针数组是指针还是数组? 我们类比⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。 那指针数组呢?是存放指针的数组。 ...整型数组和字符数组 指针数组的每个元素都是⽤来存放地址(指针)的。 如下图: 指针数组的每个元素是地址,又可以指向⼀块区域。 7.
C语⾔中给地址起 了新的名字叫:指针。 所以我们可以理解为: 内存单元的编号 == 地址 == 指针。...指针变量和地址 2.1 取地址操作符(&) 理解了内存和地址的关系,我们再回到C语⾔,在C语⾔中创建变量其实就是向内存申请空间,⽐如: 比如,上述的代码就是创建了整型变量a,内存中 申请4个字节,⽤于存放整数...答案是:指针变量中。 比如: 指针变量也是⼀种变量,这种变量就是⽤来存放地址的,存放在指针变量中的值都会理解为地址。...3.3 void* 指针 在指针类型中有⼀种特殊的类型是 void * 类型的,可以理解为无具体类型的指针(或者叫泛型指 针),这种类型的指针可以⽤来接受任意类型地址。...使得⼀个函数来处理多种类型的数据,在《深⼊理解指针(4)》中我们会讲解。
字符指针变量 2. 数组指针变量 3. 二维数组传参的本质 4. 函数指针变量 5....数组指针变量 使用方法:int(*p)[10] 解释:p和*结合,说明p是一个指针变量,然后指向的是一个大小为10个整形的数组。所以p是一个指针,指向一个数组,叫数组指针。...数组指针类型的解析: 3....函数指针数组 把函数的地址存放在一个数组中,那么就叫做函数指针数组。 int(*p[10])(int) p先与[10]结合,说明p是数组,类型是int(*)(int)的指针。 6....转移表 数组指针的用途:转移表。
数组名的理解 2. 使用指针访问数组 3. 一维数组传参的本质 4. 冒泡顺序 5. 二级指针 6....指针数组 7.指针数组和模拟二维数组(不创建二维数组来访问二维数组的元素) 前言 通过前面的介绍相信大家对指针有了初步认识,那指针有什么作用呢? 接下来一一介绍。正文开始:指针在数组的应用 1....数组名的理解 数组名就是地址 &arr[0]就是数组第一个元素的地址,而且是数组首元素的地址。 既然说数组名是首元素的地址,那接下来的代码对此疑惑?...使用指针访问数组 3. 一维数组传参的本质 这里都是arr都一样,为啥结果不同? 数组传参传递的是数组首元素的地址。 4....二级指针 6. 指针数组 是数组,还是指针? 数组。 类比 1. 字符数组 是存放字符的数组 2. 整形数组 是存放整形的数组 所以 指针数组是存放指针(地址)的数组 7.
前言 指针是C语言的核心部分,学习指针可以使内功更扎实,代码更高效和创新点更多。 说这么多,指针是什么,接下来仔细探索。...指针的运算 7. void*指针 8. 野指针 9....指针变量的大小 指针变量的大小与数据类型无关,而与平台有关。...*p 5.2 const修饰p 6.指针运算 6.1 指针+-整数 6.2 指针-指针 6.3 指针关系运算 7 void* 指针 void指针可以接收任意类型的地址,但它无法进行运算...野指针 8.1野指针成因 8.1.1.指针未初始化 int main() { int* p; *p = 20; return 0; } 8.1.2指针越界访问 //指针越界访问 int main(
1.二级指针 指针变量也是变量,是变量就有地址,那指针变量的地址就存在我们的二级指针 !!!...首先要进行一个说明*号是说明这个东西是指针例如*pa说明,pa是一级指针,**ppa说明是二级指针,所以不难发现,有几颗*,说明是几级指针。...&a,**ppa就是&a所指向的内容,即10,所以**ppa=10. 2.指针数组 指针数组是数组,数组中的每个元素是指针,即指针数组是存放指针的数组。...指针数组的每个元素是地址(指针),⼜可以指向⼀块区域。 3.数组指针 数组指针变量是⽤来存放 数组地址 的,那它是如何使用的呢?如下所示 4.函数指针 首先,我们要知道函数也是有地址的。...因为有地址,所以也会有函数指针。 那函数指针有什么用呢,我们可以通过函数指针调用指针所指向的函数。
彻底理解C++指针.pdf 推荐阅读pdf版本,原因是从WPS复制粘贴到ChinaUnix后格式有些丢了。 1. 概念 1.1. 双指针 指向一个指针的指针。 1.2. ...指针数组 由指针值组成的数组,也就是说数组的每个元素值的数据类型均为指针类型,如:int* p[2]; 1.3. 数组指针 指向一个数组的指针。 1.4. ...常见指针定义解读 int *p; p为指向int值的指针,也可以说是指向一维数组的指针,假如有一个一维数组:int m[8],则可:p = m; int *p[8];...在这里,b1是一个双指针,也就是指向指针的指针。本质上就是一个指针,因此在32位平台上它的值是4,在64位平台上它的值是8。...回归本质 指针的加减操作,实际是对地址的操作,而解引用“*”是取所在地址的数据,数组下标操作“[]”也是取所在地址的数据。 彻底理解指针,最关节是理解内存是啥。
一: 指针的理解与操作 1:指针与指针变量? 指针是什么?以及指针地址的概念? 指针就是地址,地址就是指针。指针变量可用于存放地址。...指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。 将指针的等同于指针变量是不严格的说法,指针并不是存放地址,指针变量才可以存放地址。...,多级指针,指向指针的指针?...这边的指针大家在代码中就理解为指针变量就可,这样严格一些就不会弄混。...我们定义一个指针变量,既然是一个变量,那肯定需要空间,或者叫内存空间,既然是占用了内存空间,那必然会有地址,既然是有地址,我们必然可以定义另一个指针来存放该指针变量的地址。所以可以称之为双重指针。
进一步理解指针2:双指针、指针数组和数组指针.pdf 1. 概念 1.1. 指针 对于“p + 1”,这里的“1”是啥?...双指针 指向一个指针的指针。 1.2. 指针数组 由指针值组成的数组,也就是说数组的每个元素值的数据类型均为指针类型,如:int* p[2]; 1.3. ...在这里,b1是一个双指针,也就是指向指针的指针。本质上就是一个指针,因此在32位平台上它的值是4,在64位平台上它的值是8。 5. 初始化 如何来初始化双指针、指针数组和数组指针?...)); printf("pp=%p\n", pp); printf("pp+1=%p\n", pp+1); // 不要将“pp[0][1]”理解成...相关参考 《进一步理解指针:一维数组和二维数组转换》: http://blog.chinaunix.net/uid-20682147-id-4967871.html 《常见指针定义解读
领取专属 10元无门槛券
手把手带您无忧上云