栗子一:int**与int*

#include <stdio.h>void main(){int a =8;int *p1 = &a;int **p2 = p1;//二级指针p2指向一级指针p1所指向的地址&a,而不是存放了p1本身的地址,这个需要注意的.printf("&a = %p, p1 = %p, &p1 = %p, *p1 = %d\n",&a,p1,&p1,*p1);printf("&a = %p, p2 = %p, &p2 = %p, *p2 = %d\n\n",&a,p2,&p2,*p2);//所以二级指针p2取一次*,就能取到a的值.int b =9;int *pp1 = &b;int **pp2 = &pp1;//二级指针pp2指向一级指针本身的地址&pp1(即pp2指针变量存放了pp1本身的地址&pp1),而pp1又指向了&a的地址(即pp1本身又存放了b的地址&),最后b的地址&b又存放了9的int型变量.printf("&b = %p, pp1 = %p, &pp1 = %p, *pp1 = %d\n",&b,pp1,&pp1,*pp1);printf("&b = %p, pp2 = %p, &pp2 = %p, **pp2 = %d\n",&b,pp2,&pp2,**pp2);//所以二级指针p2取两次*,才能取到b的值.
}

print:

&a = 0x7fff0907eef0, p1 = 0x7fff0907eef0, &p1 = 0x7fff0907eef8, *p1 = 8
&a = 0x7fff0907eef0, p2 = 0x7fff0907eef0, &p2 = 0x7fff0907ef00, *p2 = 8

&b = 0x7fff0907eef4, pp1 = 0x7fff0907eef4, &pp1 = 0x7fff0907ef08, *pp1 = 9
&b = 0x7fff0907eef4, pp2 = 0x7fff0907ef08, &pp2 = 0x7fff0907ef10, **pp2 = 9

栗子二:char**与char*

#include <stdio.h>void main(){char *str = "hello world";char **p = &str;printf("str = %s, str = %p, &str = %p\n",str,str,&str);printf("*p = %s, p = %p, &p = %p\n\n",*p,p,&p);char *name = "hello world";char **pp = name;printf("name = %s, name = %p, &name = %p\n",name,name,&name);printf("*pp = %s, pp = %p, &pp = %p\n",pp,pp,&pp);
}

print:

str = hello world, str = 0x55df4dbd4818, &str = 0x7fff08bb6b48
*p = hello world, p = 0x7fff08bb6b48, &p = 0x7fff08bb6b50

name = hello world, name = 0x55df4dbd4818, &name = 0x7fff08bb6b58
*pp = hello world, pp = 0x55df4dbd4818, &pp = 0x7fff08bb6b60

C语言之指针本身地址与指针向的地址(四十四)相关推荐

  1. C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

    1. 题目 请编写一个函数function,它的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后. 2 .温馨提示 C语言试题汇总里可 ...

  2. 【C语言学习】国嵌21__指针基础

    2019独角兽企业重金招聘Python工程师标准>>> 一.指针基础 变量只是一段存储空间的别名,那么是不是必须通过这个别名才可以使用这段存储空间?答案是否定的.我们还可以通过指针也 ...

  3. 彻底理解——指针常量和常量指针、指向常量的常指针

    前言   在汉语中,定语一般都放在中心词的前面,像C语言和C++语言这种技术性语言,更是如此.   所以定语重要还是中心词重要,肯定是中心词重要.   如:美丽的女孩 美丽的是定语 女孩是中心词    ...

  4. 指针数组,数组指针,存放数组指针的数组,指向存放数组指针数组的指针,函数指针,函数指针数组,指向函数指针数组的指针

    数组: 一组数据的集合称为数组,它所包含的每一个数据叫做数组元素,例如 int a[4]: 它定义了一个长度为4的整型数组,名字是a . 一般的定义数组可以用 :数据类型 数组名 [数组长度]:来声明 ...

  5. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  6. c语言函数修改指针本身,C语言函数内部改变指针本身

    今天发一个C语言基础的小知识点:C语言中函数参数传递方式只有一种:值传递. 可能大家在刚开始学习C的时候都被一些教材误导,认为C中有值传递和地址传递两种方式.其实只有值传递一种,无论函数以什么形式进行 ...

  7. 【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )

    文章目录 前言 一.数组符号 [] 与 指针 * 符号 使用效果 基本等价 二.数组首地址 与 指针 本质区别 前言 参考 [C 语言]指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方 ...

  8. c++如何打印一维数组首地址_C语言之二维数组和指针的结合

    最近在练习 C 语言计算机二级的程序设计题,碰到了二维数组和指针的结合,当时怎么调试都不对,自己也记不清楚该怎么用了就跑去看书翻资料重新复习.自己纠结的问题是二维数组 int a[3][4]的数组名是 ...

  9. printf 指针地址_指针搞都不懂,好意思说自己会C语言?

    C语言面试必问知识点之「指针」 一.指针相关概念 指针与地址 我们使用的计算机,系统为了更好地管理我们的内存,就为内存区的每一个字节都分配一个唯一编号,这就是"地址". 指针的实质 ...

最新文章

  1. javascript编写_用JavaScript深入探讨:为什么对编写好的代码至关重要。
  2. SeaJS基本开发原则
  3. mysql 并行复制搭建_基于GTID的主从实践系列之④并行复制搭建及测试
  4. 系统模块——什么是系统模块、path 路径操作、相对路径VS绝对路径
  5. Tkinter的Menu组件
  6. Java静态内部类、匿名内部类、成员式内部类和局部内部类
  7. 4k视频写入速度要求_为什么视频工作者需要外置硬盘?
  8. MapReduce 论文翻译
  9. sql datetime 排序_超全的数据库建表/SQL/索引规范,建议贴在工位上!
  10. mysql acid_Mysql中ACID的原理
  11. Blah数集(信息学奥赛一本通-T1333)
  12. oracle中修改数据库实例监听的ip和端口
  13. mysql怎么访问网页版_mysql在本地已经启动,但是在网页上不能直接访问的解决...
  14. 改变Oracle 默认显示格式
  15. html5 canvas实现led样式数字字体
  16. GPRS远程开关 2 AIR202模块
  17. U盘和移动硬盘的文件设置自定义图标
  18. 2022年医院三基考试药师(中医临床)考试模拟试题卷及答案
  19. spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项目查看 和 爬虫任务定时调度的可视化管理工具
  20. 在250美元5天城市

热门文章

  1. 吴恩达机器学习笔记-非监督学习
  2. Oracle中函数/过程返回结果集的几种方式
  3. 如何拥有一个有意义的人生
  4. list mybatis批量保存_如何实现mybatis批量将list数据插入到数据库
  5. linux移动文件 rf参数_linux下文件的复制、移动与删除
  6. vue 父组件给子组件传值
  7. mysql cst_JDBC与mysql同为CST时区导致数据库时间和客户端时间差13或者14小时
  8. c语言代码大全表解释_正点原子Linux第十章C语言版LED灯实验
  9. java 动态加载ztree_JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建...
  10. mobaxterm设置中文界面_如何使用MobaXterm打开WSL2的GUI程序