C语言之对指针概念的初步探究
指针?什么是指针?
指针(pointer)是一个值为内存地址的变量(或数据对象)。
接下来从变量的角度分析:
变量有两个属性,一个是地址,一个是值。
指针与普通变量的不同之处在于:指针变量的值是一个内存地址。
变量有两个属性:那么获取这两个属性的方式就是使用以下两种运算符
取址运算符 &
后跟一个变量名,&给出该变量的地址;
间接运算符 *
后跟一个指针名或地址时,*给出储存在指针指向地址上的值;
指针的意义何在?
指针提供一种以符号形式使用地址的方法。
因为计算机硬件指令非常依赖地址。
指针在某种程度上把程序员要传达的指令以更接近机器的方式表达。
指针使程序更有效率。
尤其是指针能有效处理数组。数组表示法实际上是变相使用指针。
大概有哪方面的知识点:
1、指针和数组、多维数组、数组指针、
2、指针和函数、函数间的通信、函数指针、
3、指针作为形参
4、指针操作
5、指针数组
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
什么是变量?什么是数据对象?什么是内存地址?什么是值?
计算机中有内存,内存用于存储程序中的数据。
内存实际上就是一个块可供CPU访问的存储区域,存储空间。
访问内存,要知道访问哪一块区域,于是就要有内存地址来描述内存特定的储存空间。
存储空间的存储单元是一个字节。用内存地址来描述每个字节的存储空间。
存储单元存的数据就是值。
C语言提供了不同的模型和存储类别,在内存中储存数据。
被内存存储的每一个值都占用一定的物理内存,C语言这样一块内存称为对象。或者叫数据对象。
注意这根面向对象编程中的类对象不是一个概念。
程序需要一种方法访问对象---->声明变量,变量用标识符表示,这样软件就可以通过标识符来指定物理内存中的对象了。
变量标识符(变量名)是内存对象的一种访问途径。
当然途径不止这一种,还有一种途径就是指针。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
函数指针:
函数指针是指向函数的指针变量。是一个指针,指向一个函数。
因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。
这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。
函数指针有两个用途:调用函数和做函数的参数。
int func(int x); //声明一个函数
int (* f)(int x); //声明一个函数指针,包含了要指向的函数原型信息;int是返回值, 圆括号内的int x是形参参数信息;
于是就有如下操作:
f=func; /* 将func函数的首地址赋给指针f */
f = &func; //或者这么赋值给指针
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
待补充。。。。。。
C语言之对指针概念的初步探究的更多相关文章
- C语言学习笔记--指针概念
指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...
- 深入理解C语言中的指针与数组之指针篇
转载于http://blog.csdn.net/hinyunsin/article/details/6662851 前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...
- 深入理解C语言中的指针与数组之指针篇(转载)
前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...
- C语言中file文件指针概念及其操作 (转载)
文件 文件的基本概念 所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件. ...
- Go语言基础之指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. Go语言中的指针 Go语言中的函数传参都是值拷贝 ...
- c语言之函数指针应用
c语言之函数指针应用 1.函数指针与指针函数 在开始运用函数指针前,我们需要将两个概念即:函数指针与指针函数搞清楚. 函数指针,指明这个一个函数,但返回值为指针类型,语法格式为: 类型名* 函数名A( ...
- 3.1 Go语言基础之指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. 一.Go语言中的指针 Go语言中的函数传参都是值 ...
- C语言之漫谈指针(上)
C语言之漫谈指针(上) 在C语言学习的途中,我们永远有一个绕不了的坑,那就是--指针. 在这篇文章中我们就谈一谈指针的一些基础知识. 纲要: 零.谈指针之前的小知识 一.指针与指针变量 二.指针变量的 ...
- C语言之漫谈指针(下)
C语言之漫谈指针(下) 在上节我们讲到了一些关于指针的基础知识: 详见:C语言之漫谈指针(上) 本节大纲: 零.小tips 一.字符指针 二.指针数组与数组指针 三.数组传参与指针传参 四.函数指针及 ...
随机推荐
- IDEA中Git实战
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...
- 第2章 构建springboot工程 2-1 构建SpringBoot第一个demo
以后的趋势肯定是以一个微服务为主导的, Spring-Boot的指导 Maven整个环境构建之前的整个项目其实是一个很普通的J2SE项目,它构建完之后会进行重构,重构为Maven的一个项目路径.可以看 ...
- 【总结整理】天地图WMTS服务与卫星图匹配与坐标转换
http://blog.sina.com.cn/s/blog_60abbd570102wnhh.html
- 解析IFC数据并转成json格式
{ "com.bim.ifc.ifc2x3.ifc2x3tc1.IfcBuilding (#104)-": [{ "objKey": "GlobalI ...
- vray学习笔记(2)vray工作流程
在bilibili上面搜索到了一个vray的教程,虽然是英语的,细节方面可能听不太懂,但可以了解整个工作流程,工作流程太重要了,先看下视频的目录: 第1节到第9节都是建模的内容. 第10节和第13节是 ...
- Luogu 2939 [USACO09FEB]改造路Revamping Trails && Luogu 4568 [JLOI2011]飞行路线
双倍经验 写这两题之前被大佬剧透了呜呜呜. 分层图+最短路. 因为有$k$次机会能够把路径的费用变为$0$,我们可以建$k + 1$层图,对于每一层图我们把原来的边权和双向边连到上面去,而对于层与层之 ...
- serializeArray()和.serialize()的区别、联系
serializeArray()和.serialize()的区别.联系 <form id='addForm' action='UserAdd.action' type='post'> ...
- 日常学习随笔-自定义了一个MyArrayListDefin集合(数组扩容+迭代器+JDK1.8新方法+详细说明)
一.自定义了一个ArrayList的模拟集合(源码+详细说明) 前段时间分析了下ArrayList集合的源码,总觉得如果不自己定义一个的话,好像缺了点什么,所以有了如下的代码. 代码可以说是逐行注释了 ...
- Bugly集成指南
官网: https://bugly.qq.com/v2/,用QQ扫码登录即可 1.创建应用,获取APPID 2.自动集成 2.1 在Module的build.gradle文件中添加依赖和属性配置: d ...
- jQuery 插件开发——PopupLayer(弹出层)
导读:上次写了一篇关于GridView的插件开发方法,上几天由于工作需要,花了一天左右的事件封装了popupLayer(弹出层)插件.今天有时间就记录一下自己的开发思想与大家分享下,同时也算是对这段时 ...