C语言中指针*p、p以及p之间的区别以及*p和**p的区别
*p、p以及&p之间的区别
假设我们定义一个指针p。
那么会经常使用到三个符号:
1,p;
2,*p;
3,&p;
- p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。
- *p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
- &是取地址运算符,&p就是取指针p的地址,&p就表示编译器为变量p分配的内存地址,而因为p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示
#include <stdio.h>int main()
{int var = 20; /* 实际变量的声明 */int* p; /* 指针变量的声明 */p = &var; /* 在指针变量中存储 var 的地址 */printf("Address of var variable: %p\n", &var);/* 在指针变量中存储的地址 */printf("Address stored in p variable: %p\n", p);/* 指针p的的寻出地址地址*/printf("Value of &p variable: %p\n", &p);/* 使用指针访问值 */printf("Value of *p variable: %d\n", *p);return 0;
}
结果如下:
*p和**p的区别
- int *p :一级指针,表示p所指向的地址里面存放的是一个int类型的值
- int **p :二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的一级指针)
同样地,下面代码增加一个二级指针
#include <stdio.h>int main()
{int var = 20; /* 实际变量的声明 */int* p; /* 指针变量的声明 */p = &var; /* 在指针变量中存储 var 的地址 */int** p1 = &p; //定义了一个二级指针指向p指针printf("Address of var variable: %p\n", &var);/* 在指针变量中存储的地址 */printf("Address stored in p variable: %p\n", p);/* 指针p的的寻出地址地址*/printf("Value of &p variable: %p\n", &p);/* 使用指针访问值 */printf("Value of *p variable: %d\n", *p);printf("Value of **p1 variable: %d\n", **p1);return 0;
}
运行结果:
C语言中指针*p、p以及p之间的区别以及*p和**p的区别相关推荐
- c语言中指针中 - 和 。的区别?
c语言中指针中 -> 和 .的区别? 例子1:比如有如下结构 typedef strut node{ int data; strut node * next; } ListNode; Lis ...
- c语言字符串加减_C语言中指针的介绍
C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...
- c语言中*用于指针,关于C语言中指针的理解
关于c语言中指针的一些理解 这几天在看任哲老师编写的嵌入式实时操作系统uC/OS原理与应用一书,第二章讲到指针的用法,我发现自己有些地方有疑问,就重新看了关于c指针的知识.同时也对指针有了一定的理解. ...
- c语言中的指针语法,C语言中指针的用法介绍
C语言中指针的用法介绍 for(int i=0;i { num+=*s;s++; } return num; ) 这个例子中的函数 fun统计一个字符串中各个字符的 ASCII 码值之和.前面说了,数 ...
- C语言中指针的地址和内容
参考:C语言中指针的地址和内容 作者:wallying 发布时间:2018-10-18 09:47:54 网址:https://blog.csdn.net/qq_36631580/article/de ...
- c语言间接寻址与指针,C语言中指针是不是用汇编的间接寻址实现的?
C语言中指针是不是用汇编的间接寻址实现的? 112 151 更新于 2014-08-05 看到间接寻址,想到指针,它们仅仅是相似,还是说指针就是用汇编的间接寻址实现的? c 关注收藏2 评论 阅读 5 ...
- c语言中减号算一个字符吗,C语言中指针的加减运算
char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; printf(&q ...
- C语言指针使用过程中 不需要清零,C语言中指针使用常见问题及解决办法.pdf
. - - 自 · - j 1- j w - m - - [ - № 实用第一 智慧密集 C语 i觅 及 捧法l j||? l .. 一 摘 要:讲述 了在 c语言中指针使用时所 出现的一些常见问题 ...
- 初学者对C语言中指针的爱恨情仇
C语言中指针和数组的爱恨情仇 文章目录 C语言中指针和数组的爱恨情仇 一.前言 二.为什么学指针 三.说明 四.跟我一起学 (一)C语言中的*和& 1.C语言中为什么存在&和* 2.& ...
- c语言指针很危险,浅谈C语言中指针使用不当的危险性.doc
浅谈C语言中指针使用不当的危险性.doc 第 19 卷 Vol . 19 第 2 期 No . 2 洛阳师专学报 Journal of Luoyang Teachers College 2000 年 ...
最新文章
- 编译ceph源码:cython module not found问题的解决
- oc75--不可变字典NSDictionary
- 0x21.搜索 - 树与图的遍历、拓扑排序
- 使用js对来判断一个字符串中括号是否平衡匹配
- 【Python基础】使用Matplotlib可视化数据的5个强大技巧
- xp系统oracle数据库,Oracle10g 数据库的安装基于windowsXP
- 争分夺秒!一大批高校正在加紧扩建......
- 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
- [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开...
- [读书笔记] - 《深度探索C++对象模型》第5章 构造、解构、拷贝语意学
- 数据库迁移登录名_如何将数据库的登录名迁移到其他服务器
- Typora + PicGo + Aliyun OSS + CSDN
- pure-ftpd 配置
- 使用C++模板判断是否基本类型
- 微信打开网页会出现一个“将要访问”的页面是怎么回事?
- Unity机器学习库ml-agents新版本的环境搭建
- C++ C1 -namespace-using-域解析符-const-引用
- 电脑查找电子书资源,speedceo浏览器下载PDF文件阅读分享
- idempotent - 幂等
- ssh导出数据库的数据到Excel表格
热门文章
- LA 4413 Triangle Hazard 梅涅劳斯定理的应用
- 官方代付系统/支付宝微信代付/企业付款/提现秒到
- RFNet:基于RGB-D数据的语义分割和意外障碍物检测的实时融合网络
- 【每日早报】2019/10/10
- 0x00007FFA837F2487 (ucrtbased.dll)处(位于 指针.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000068 时发生访问冲突
- 一、零基础入门微信小程序开发之创建项目工程同时完成引导页开发
- move lob会不会影响其他索引状态?
- 图神经网络:GAT学习、理解、入坑
- 如何解决Namespace declaration statement has to be the very first statement or after any declare call
- Microsoft Edge:你不能不知道的6个Web开发者工具