无锡专业制作网站手机app前端开发工具
2026/4/15 7:44:20 网站建设 项目流程
无锡专业制作网站,手机app前端开发工具,网页设计期末作业素材,怎么给网站做关键词简单理解指针 1.内存和地址 首先我们可以理解指针就是电脑内存空间的地址#xff0c;我们是通过指针来访问电脑中的数据#xff0c;而这些数据是存储在电脑中的#xff0c;举一个简单的例子#xff0c;你想要找一个人#xff0c;就必须知道他的地址#xff0c;同样#…简单理解指针1.内存和地址首先我们可以理解指针就是电脑内存空间的地址我们是通过指针来访问电脑中的数据而这些数据是存储在电脑中的举一个简单的例子你想要找一个人就必须知道他的地址同样我们用指针访问内存空间可以直接简单理解为指针就是地址。所以我们可以直接理解内存单元的编号 地址指针2.指针变量和地址取地址操作符在C语言中创建变量其实就是向内存申请空间比如#includestdio.hintmain(){inta10;return0;}上述代码就是创建了整形变量a内存中申请了4个字节用于存放整数10其中每个字节都有地址如下图4个字节的地址分别是10x000000577EF6F91420x000000577EF6F94c30x000000577EF6F98440x000000577EF6F9bc而我们如果要得到a 的地址就需要用到取地址符号#includestdio.hintmain(){inta10;a;printf(%p,a);return0;}可以看到a取出的是a所占4个字节中地址较小的字节的地址。虽然整形变量占用4个字节我们只要知道了第一个字节地址就可以顺藤摸瓜访问4个字节的数据也是可行的。3.指针变量和解引用操作符*我们通过取地址操作符得到的地址是一个数值而这个数据有时候也要存起来方便以后再使用那我们把这样的地址值存放在指针变量中。指针变量也是一种变量这种变量就是用来存放地址的存放在指针变量中的值都会理解成指针而我们首先要做的就是理解解引用操作符int a10;int *pa a;pa左边写的是int *, *是在说明pa是指针变量而前面的int 是在说明pa 指向的是整形int类型的对象。除此之外我们还可以通过解引用操作符来修改变量中的值。#includestdio.hintmain(){inta100;int*paa;*pa0;printf(%d,a);return0;}通过上述代码以及打印结果可以看出a 的值被修改为了03.指针变量类型的意义先看一段代码#includestdio.hintmain(){intn10;char*pc(char*)n;int*pin;printf(%p\n,n);printf(%p\n,pc);printf(%p\n,pc1);printf(%p\n,pi);printf(%p\n,pi1);return0;}上述代码中我们定义了一个整形变量n, 然后分别用char*类型的指针变量和int*类型的指针变量来存储n的地址我们分别打印出pc、n、pc1、pi1的地址发现pc 与 n 的地址是一样的但是pc1,和pi1的地址有所不用原因是在于指针的类型不一样我们先将pc 强制转化位char* 类型的指针再1只移动一个字节而int* 类型的指针1移动的是4个字节。结论指针的类型决定了指针向前或者向后走一步的距离。void * 指针:再指针类型中有一种指针是void* 类型的可以理解为无具体类型的指针泛型指针这种指针可以用来接受任意类型的地址。但是也有局限性void类型的指针不能直接进行指针的±整数和解引用的运算。而void类型的指针是使用在函数参数的部分用来接收不同类型的数据的地址这样的设计可以使得一个函数用来处理多种类型的数据。4.指针的运算指针的基本运算有三种分别是指针±整数指针-指针指针的关系运算指针±指针#includestdio.hintmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};int*parr;inti0;intszsizeof(arr)/sizeof(arr[0]);for(i0;isz;i){printf(%d ,*(pi));}return0;}数组在内存中的地址是连续存放的所以知道第一个元素地址就可以依次找到所有元素。指针-指针#includestdio.hintmain(){charp[5]abc;char*sp;while(*s!\0){s;}printf(%d,s-p);return0;}大指针-小指针得到的是两个指针之间的元素个数反之则是个数的相反数。指针的关系运算#includestdio.hintmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};int*parr;intszsizeof(arr)/sizeof(arr[0]);while(parrsz){printf(%d ,*p);p;}return0;}大家在这里可能会很疑惑打印出来的为什么不是1-10而是1-5原因在于本人所用的编译器是64位的在64位下的编译器中指针变量占8字节在32位的编译器中指针变量才为4字节而arr这个数组占40字节所以得到的sz位5结语以上是本人对于指针的一些理解和心得后续还会有更详细的指针讲解比如const修饰指针二级指针等。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询