C语言指针的高级操作
2024-08-25 23:28:53
C语言指针的高级操作
指针
指针
在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作。
指向指针的指针
这名字乍一听有点拗口,再次一听就更加拗口了。先看定义:
type **ptr;
指向指针的指针
仅仅只比比指针只多了一个*
号,没什么很大的改变,接下在我们看一下使用:
#include <stdio.h>
void main()
{
int var = 10;
int *ptr;
int **pptr;
ptr = &var;
pptr = &ptr;
printf("ptr的值是%p\n",ptr);
printf("*ptr的值是%d\n",*ptr);
printf("pptr的值是%p\n",pptr);
printf("*pptr的值是%p\n",*pptr);
printf("**pptr的值是%d\n",**pptr);
}
这时候我们想一想&
和*
的作用就能理解了
&
:取地址*
:从地址中取值
我们都知道,C语言指针是一个变量
,只不过变量所储存的值只能是地址罢了。那么它肯定在内存空间肯定要占一个位置,因为不可能是凭空产生的嘛,那么指针便有一个内存地址
。
所以,在上面的代码中,pptr
即代表着指针变量ptr
的内存地址
。而*pptr
代表的便是指针ptr
的值
即var
的内存地址
,所以**pptr
便代表的是var
的值。
代码运行结果如下:
ptr的值是0x7ffe3aee9994
*ptr的值是10
pptr的值是0x7ffe3aee9998
*pptr的指向的值是0x7ffe3aee9994
**pptr的指向的值是10
最新文章
- Sass的基本运算(转载)
- 读过的laravel文章
- [MongoDB]Mongodb攻略
- 如何用chrome修改js代码,跳过网站等待时间
- 读书笔记-《Training Products of Experts by Minimizing Contrastive Divergence》
- 字符串(AC自动机):COCI 2015 round 5 divljak
- PHP之路——验证码实现
- MapReduce源代码浅析
- MyBatis --- 动态SQL、缓存机制
- Python菜鸟快乐游戏编程_pygame(3)
- 简单易懂的解释c#的abstract和virtual的用法和区别
- html、css基础整理
- C++:如何正确的定义一个接口类
- MATLAB中mesh函数的使用:基于像素强度画3D密度图(create a 3D density plot based on the pixel intensity:mesh function)
- C# 将DateTime.Now.DayOfWeek的值转为中文星期
- RxJava中的doOnSubscribe默认运行线程分析
- [android] Android 错误集锦
- [ 翻译]ruby rails相关的常见服务器
- python中执行shell命令
- linux系统 使用git图形化管理工具———gitk