C语言*p、p以及p的区别
前言:
先要理解地址和数据,你可以想象有很多盒子,每个盒子有对应的号码,那个号码叫做“地址”,而盒子里放的东西叫做“数据”。
上面就段理解了,*p和p的区别就不难解释了。
p是指针变量,用来存放地址,你可以认为是上面所说的盒子的号码,“*”是解引用操作符,你可以把它理解成打开盒子,*p就是打开p号盒子,取出里面的数据。
简单来说,你记住,p存放的是地址,而*p是让程序去那个地址取出数据。
总结:
假设我们定义一个指针p。
那么会经常使用到三个符号:
1,p;
2,*p;
3,&p;
初学者经常会感到很迷茫,到底这三个符号表示什么?
我们知道,p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。而*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
而我们知道,&是取地址运算符,&p就是取指针p的地址。等会,怎么又来了个地址,它到底和p有什么区别?
区别在于,指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一 样。而&p就表示编译器为变量p分配的内存地址,而因为p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要 让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示。
有着梦想,但改变不了世界, 只有坚持,让生活不再单调, 我不是我, 我还是我。
C语言*p、p以及p的区别相关推荐
- 强类型语言和静态类型语言有什么区别?
另外,一方是否意味着另一方? #1楼 强类型意味着类型之间的转换之间存在限制. 静态类型意味着类型不是动态的 - 一旦创建变量,就无法更改变量的类型. #2楼 这经常被误解,所以让我澄清一下. 静态/ ...
- c语言 python-C语言和python的区别
Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...
- run在java_Java语言start和run方法的区别
Java语言start和run方法的区别 导语:Thread类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法.那么它和start方法有什么不同呢?让我们了解一下吧! 调用start ...
- C语言 scanf()和gets()函数的区别
C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求"从控 ...
- C语言 vprintf 函数和 printf 函数区别 - C语言零基础入门教程
目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用 三.猜你喜欢 零基础 C/C ...
- C语言 #include <> 与 #include “” 区别 - C语言零基础入门教程
目录 一.什么是头文件 二.#include <> 三.#include "" 四.#include <> 与 #include "" ...
- C语言 函数指针和指针函数区别 - C语言零基础入门教程
目录 一.函数指针和指针函数声明的区别 1.函数指针 2.指针函数 二.函数指针和指针函数调用的区别 1.函数指针的调用 2.指针函数的调用 三.猜你喜欢 零基础 Python 学习路线推荐 : C/ ...
- C语言 指针数组和数组指针区别 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.指针数组和数组指针区别 1.指针数组 2.数组指针 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> ...
- C语言和C++语言在语法上面的部分区别
(2011-03-16 17:12:13) 标签: 杂谈 分类:计算机 C语言和C++语言在语法上面的部分区别: 1.C语言的定义必须在最前面,C++可以在任何地方定义,比如 for(int i=0; ...
- c语言中栈堆,全程剖析C语言中堆和栈的区别
C语言中堆和栈的区别 1.申请方式 (1)栈(satck):由系统自动分配.例如,声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间. (2)堆(heap):需程序员自己申请(调用mall ...
最新文章
- ICLR 2019高分论文抢先看,谁是第一?
- 【每日一算法】求众数
- 赔得比赚得多,职场人年终奖都花哪儿了?
- UDP socket 设置为的非阻塞模式
- 总结redis中对象的类型与编码
- 新浪微博WeiboManageAction的java实现
- el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)
- #6281. 数列分块入门 5
- 微信小程序-仿淘宝(附真机测试图)(持续更新中。。。)
- 功能自动化接入持续集成方案
- matlab基于瑞利信道,基于matlab的瑞利信道仿真.docx
- 本地html导入印象笔记,LocalNote,让你像使用本地文件一样使用印象笔记(支持 markdown 格式)...
- 2021数学建模B题及思路
- 软件项目活动图 关键路径
- C#报错Newtonsoft.Json.JsonSerializationException: “A member with the name ‘phone‘ already
- Java实现餐厅点餐系统
- 解决VS Code 运行 “conda : The term ‘conda‘ is not recognized as the name of a cmdlet, function, script “
- Linux != Windows( Linux 不是 Windows)
- 如何通过UTON WALLET数字钱包创建和使用你的元宇宙身份
- 快速搭建简单图床 - 远程访问本地搭建的EasyImage图床【内网穿透】