【C语言】崩溃的双重指针
指针的指针?
前言:
指针的初识点击移步
双重指针:
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。
直接上脚本
#include <stdio.h> int main ()
{
int a = 10;
int *p,**pt; p = &a;
pt = &p; printf("变量a的内存地址:0x%X\n",&a);
printf("变量a存储的值:%d\n",a);
printf("指针p的内存地址:0x%X\n",&p);
printf("指针p存储的地址:0x%X\n",p);
printf("指针pt的内存地址:0x%X\n",&pt);
printf("指针pt存储的地址:0x%X\n",pt);
}
执行输出
变量a的内存地址:0x24FE4C
变量a存储的值:10
指针p的内存地址:0x24FE40
指针p存储的地址:0x24FE4C
指针pt的内存地址:0x24FE38
指针pt存储的地址:0x24FE40
由输出可见,双重指针pt存储的地址为指针p的内存地址 即pt = &p ; 单指针之前已经总结过,在此不再赘述;那么*pt,**pt又为何值与指针p的关系是什么?
#include <stdio.h> int main ()
{
int a = 10;
int *p,**pt; p = &a;
pt = &p; printf("变量a的内存地址:0x%X\n",&a);
printf("变量a存储的值:%d\n",a);
printf("指针p的内存地址:0x%X\n",&p);
printf("指针p存储的地址:0x%X\n",p);
printf("指针pt的内存地址:0x%X\n",&pt);
printf("指针pt存储的地址:0x%X\n",pt);
printf("指针*pt是什么:0x%X\n",*pt);
printf("指针**pt是什么:%d\n",**pt);
} //变量a的内存地址:0x24FE4C
//变量a存储的值:10
//指针p的内存地址:0x24FE40
//指针p存储的地址:0x24FE4C
//指针pt的内存地址:0x24FE38
//指针pt存储的地址:0x24FE40
//指针*pt是什么:0x24FE4C
//指针**pt是什么:10
等价关系 *pt = p ,**pt = p ;
绘制关系图如下:
【C语言】崩溃的双重指针的更多相关文章
- 【C语言】学不会的指针
指针 前言: 指针是C语言程序的核心,刚开始学指针,嗯....这样呀,貌似不难呀:之后开始用指针,&p,p,*p,**p,这些指针在用的时候,额.....什么东东?每次都要想半天,特别是遇到双 ...
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- 【转载】C/C++语言void及void指针深层探索
C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述vo ...
- C++ 二维数组(双重指针作为函数参数)
本文的学习内容参考:http://blog.csdn.net/yunyun1886358/article/details/5659851 http://blog.csdn.net/xudongdong ...
- 函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)
记得刚开始工作时,一位高手告诉我说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后 ...
- C语言中的函数指针
C语言中的函数指针 函数指针的概念: 函数指针是一个指向位于代码段的函数代码的指针. 函数指针的使用: #include<stdio.h> typedef struct (*fun_t ...
- C语言精要总结-指针系列(一)
考虑到指针内容繁多,这里将指针作为一个系列,从简入繁,一点一点深挖并掌握这C语言的精华.初步计划如下 此文为指针系列第一篇: C语言精要总结-指针系列(一) 内存与地址 我们可以把内存看做一排连续的房 ...
- C语言精要总结-指针系列(二)
此文为指针系列第二篇: C语言精要总结-指针系列(一) C语言精要总结-指针系列(二) 指针运算 前面提到过指针的解引用运算,除此之外,指针还能进行部分算数运算.关系运算 指针能进行的有意义的算术运算 ...
- C语言第八讲,指针*
C语言第八讲,指针* 一丶简单理解指针 说到指针,很多人都说是C语言的重点. 也说是C语言的难点. 其实指针并不是难.而是很多人搞不清地址 和 值.以及指针类型. 为什么这样说. 假设有两个变量,如下 ...
随机推荐
- 从Hello World 来讲解线程
从一个经典的例子开始:一个打印“Hello World.”的程序.一个非常简单的在单线程中运行的Hello World程序如下所示,当我们谈到多线程时,它可以作为一个基准. #include<i ...
- 【JZOJ6246】【20190627】B
题目 求逆续对个数为\(k\)的\(n\)阶排列个数\(mod \ 1e9+7\) $1 \le n , k \le 10^5 $ 题解 $f_{i,j} = \sum_{k=0}^{i-1} f ...
- 洛谷P1084 疫情控制
题目 细节比较多的二分+跟LCA倍增差不多的思想 首先有这样一个贪心思路,深度越低的检查点越好,而最长时间和深度具有单调性,即给定时间越长,每个军队能向更浅的地方放置检查点.因此可以考虑二分时间,然后 ...
- go - helloword
package mainimport "fmt" //一定要双引号func main() {/* test hello word *///test fmt.Println(&quo ...
- [BUAA软工]提问回顾与个人总结
提问回顾与个人总结 项目 内容 所属课程 2019春季计算机学院软件工程(任健) 所属作业 提问回顾与问题总结 课程目标 理解软件工程的作用和重要性,提升工程能力,团队协作能力 作业目标 回顾软工课程 ...
- python lambda表达式简单用法【转】
python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...
- python mysql数据库压力测试
python mysql数据库压力测试 pymysql 的执行时间对比 1,装饰器,计算插入1000条数据需要的时间 def timer(func): def decor(*args): start_ ...
- sharding jdbc(sphere) 3.1.0 spring boot配置
sharding jdbc 2.x系列详解参见https://www.cnblogs.com/zhjh256/p/9221634.html. 最近将sharding jdbc的配置从xml切换到了sp ...
- 通过 UNSAFE 来实现一个 Atomic 的 CAS 辅助类【原创】
public abstract class AbstractUnSafeCas<T> { @SuppressWarnings("unused") private vol ...
- macOS 10.15 Catalina xxx.app已损坏,无法打开,你应该将它移到废纸篓解决方法
原文连接:https://www.macwk.com/article/mac-catalina-1015-file-damage 更新macOS 10.15 Catalina后,很多在10.14上可以 ...