01深入理解C指针之---指针含义符号
该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。
1、指针的含义:
指针本身也是变量,与其他一般变量不同的是:指针变量中没有存储具体类型的数据,而是存储这一串16进制的值。这串值,就是内存的地址。计算机的OS运行时,管理内存过程中,为了高效管理内存,为内存进行编号,以字节为单位编号。而内存的地址存放到变量中。这样看来,指针的地址也是地址,指针变量中的值也是地址。
2、*符号的作用
(1)声明指针变量使用
(2)解指针变量,取出指针值中对应地址的值
3、&符号的作用
取变量的地址
请看例子,非常简单,但是说明的问题还是很多:
1 #include <stdio.h>
2
3 int main(int argc, char *argv)
4 {
5 int num = 10;
6 int *numptr;
7 numptr = #
8 printf("Address num: %p, value num: %d\n", &num, num);
9 printf("Address numptr: %p, value numptr: %p, value *numptr: %d\n", &numptr, numptr, *numptr);
10
11 return 0;
12 }
第一次运行结果:
Address num: 0x7fffbfa6236c, value num: 10
Address numptr: 0x7fffbfa62360, value numptr: 0x7fffbfa6236c, value *numptr: 10
第二次运行结果:
Address num: 0x7ffdbff4ff0c, value num: 10
Address numptr: 0x7ffdbff4ff00, value numptr: 0x7ffdbff4ff0c, value *numptr: 10
(1)声明一个变量num,实际在计算机中num是代表地址,而地址就更加具体了,变量名只是让人看起来更加习惯,在计算中是不存在这个num变量的,很明显可以看出两次运行的结果中同样的num,地址是不一样的,但是这不会影响这个变量名为num,就向人的名字一样,取名字时都是可以随便取的一样。
(2)虽然两次的地址不一样,但是由于使用了相同的变量名num,所以使用变量访问是得到的就是同样的值为10
(3)例中我门使用了&取地址符号,顺利得到了num的地址,两次都不一样
(4)我们观察numptr的指针变量时,发现由于有第7行代码的作用,两次运行中,numptr的值,也就是指针代表的地址与num的地址是一样的,如果我们直接使用指针变量的变量名就是得到了num的地址,如果想进一步取得num的值,就须要*numptr,这时,*符号的作用就是取指针变量值(地址)对应的值,因此得到了num的值
01深入理解C指针之---指针含义符号的更多相关文章
- 这样子来理解C语言中指针的指针
友情提示:阅读本文前,请先参考我的之前的文章<从四个属性的角度来理解C语言的指针也许会更好理解>,若已阅读,请继续往下看. 我从4个属性的角度来总结了C语言中的指针概念.对于C语言的一个指 ...
- 从四个属性的角度来理解C语言的指针也许会更好理解
文章会在文末更新! 关于指针是什么,很多教材已经作出了定义,大多数都会定义为"存放变量内存地址的变量".从这句话中我觉得除了让我知道这个定义有11个字以外,其他就没什么用了.我个人 ...
- 《挑战30天C++入门极限》C/C++中字符指针数组及指向指针的指针的含义
C/C++中字符指针数组及指向指针的指针的含义 就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针. 先看下面的代码,注意看 ...
- 00深入理解C指针之--- 指针之外
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. C语言从诞生之初就非常善于和硬件打交道,经过这么多年的发展之后,其灵活性和超强的特征是 ...
- 02深入理解C指针之---指针类型和值
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 1.指针的类型: 可以在声明指针时,指定指针的类型,例如: (1)void *x 声 ...
- 06深入理解C指针之---指针操作和比较
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则.本节内容中指针的操 ...
- 10深入理解C指针之---指针运算和比较
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针运算有很多种,主要有指针的声明*.指针的解引*.指针指向(*).或->.指针 ...
- 理解C语言中指针的声明以及复杂声明的语法
昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...
- 理解git 中的HEAD指针&branch指针
理解git 中的HEAD指针&branch指针 Yooye关注 2019.02.28 10:44:32字数 492阅读 668 HEAD指针 使用git checkout 来移动HEAD指针, ...
- 深入理解C语言-函数指针
函数指针在C++中有着重要的应用,函数的函数名其本质就是代表一个地址,这个地址叫做函数入口,得到这个地址就可以对这个函数进行各种操作. 函数类型基础 函数三要素: 名称.参数.返回值 C语言中的函数有 ...
随机推荐
- MongoDB的Go语言驱动注意点
当我们定义一个struct用来和集合对应时,要注意结构体的字段首字母应该大写,不然不可见. 通过`bson:"name"`这种方式可以定义MongoDB中集合的字段名,如果不定义, ...
- 绿盟python测试实习面试
1.简历问题 低级错误:时间写错 最近好像越来越马大哈了,总是犯低级错误. 上次的开题报告首页,这次的时间,每次都有小问题,确是大毛病 到底哪里出错了 2 RHCE证书好像没有用 面试官根本就不懂这个 ...
- cycling -avoid the vicious cycle
‘Numerous' studies in the past appear to have shown a link between cycling and ED. The researchers a ...
- Java中String类new创建和直接赋值字符串的区别
转自:https://blog.csdn.net/a986410589/article/details/52454492 方式一:String a = “aaa” ; 方式二:String b = n ...
- 《数据结构与算法分析:C语言描述》复习——第九章“图论”——拓扑排序
2014.07.04 17:23 简介: 我们考虑一种特殊的图: 1. 有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”. 简单的来说可 ...
- 《Cracking the Coding Interview》——第14章:Java——题目6
2014-04-26 19:11 题目:设计一个循环数组,使其支持高效率的循环移位.并能够使用foreach的方式访问. 解法:foreach不太清楚,循环移位我倒是实现了一个,用带有偏移量的数组实现 ...
- Bit与Byte的区别
在工作中遇到一些概念模糊的地方, 需要记住了bit意为“位”或“比特”,是计算机运算的基础: byte意为“字节”,是计算机文件大小的基本计算单位: 说到usb2.0标准接口传输速率.许多人都将“48 ...
- 移动APP自动化测试框架对比
转自微信公众号:腾讯移动品质中心TMQ 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护.从分层测试的角度,自动化测试应该逐层进行.最大量实现自动 ...
- ASP.NET Core [2]:Middleware-请求管道的构成(笔记)
原文链接:http://www.cnblogs.com/RainingNight/p/middleware-in-asp-net-core.html 中间件处理请求主要分为三个阶段:1. 中间件的注册 ...
- 利用jsoup抓取网页图片
jsoup简介 jsoup is a Java library for working with real-world HTML. It provides a very convenient API ...