首页 > 其他分享 >C语言-指针

C语言-指针

时间:2023-04-14 15:26:32浏览次数:25  
标签:变量 C语言 地址 内存 数据结构 单元 指针

C语言-指针

指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;
并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。

地址指针的基本概念

在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存
单元的编号即可准确第找到该内存单元。内存单元的编号也叫做地址。既然根据内存单元的编号或者地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。内存单元的指针和内存单元的内容是两个不同的概念。可以用一个通俗的例子来说明
它们之间的关系。我们到银行去存取款时,银行工作人员将根据我们的帐号去找我们的存款单,找到之后在存单上写入存款、取款的金额。在这里。账号就是存单的指针,存款数是存单的内容,对于一个内存单元来说,单元的地址即为指针,其中存到的数据才是该单元的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或者称为某内存单元的指针。

如上图所示,设有字符变量C,其内容为‘K’(ASCII码为十进制数75),C占用了011A号单元(地址用十六进制数表示)。设有指针变量p,内容011A,这种情况我们称为p指向变量C,或者说p是指向变量C的指针。严格地说,一个指针是一个地址,是一个常量。
而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元
既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址。也可以是其他数据结构的地址。在一个指针变量中存放一个数组或者一个函数的首地址有何意义呢?因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数。凡是出现数组、函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可。这样做,将会使程序的概念十分清楚,程序本身也精炼、高效。在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元。用
“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一种地址,但它却是一个数据结构的首地址,它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。这也是引入“指针”概念的原因。

标签:变量,C语言,地址,内存,数据结构,单元,指针
From: https://www.cnblogs.com/bonne-chance/p/17318383.html

相关文章

  • C语言报错
    1、Useofundeclaredidentifier'SPIT_FLAG_TIMEOUT'  解决:使用未定义的标识符:SPIT_FLAG_TIMEOUT没有定义,但用#define修饰的语句又不标红。......
  • C语言函数大全--g开头的函数(下)
    C语言函数大全本篇介绍C语言函数大全--g开头的函数(下)17.getmodename17.1函数说明函数声明函数功能char*getmodename(intmode_name);获取指定的图形模式名17.2演示示例#include<graphics.h>#include<stdlib.h>#include<stdio.h>intmain(void){......
  • COMP30023 C语言题析
    COMP30023:IntroductiontoprojectsMarch24,20231IntroductionInthisdocument,wewillintroducehowCOMP30023projectsarestructured,andoutlinehowyoucanmakethemostfromtheinfrastructurewhichweprovide.Firstly,someattributesandexpectatio......
  • Python与c语言的区别与联系
    Python与c语言都是一种机器学习语言,进过长时间的学习和总结,我将Python与c语言的一些特点总结成以下几点,不全面还望多多指正。1、因为C语言是编译型语言,python是解释型语言,所以python的执行速度没有C语言那么快。2、基本元素的区别,python中的基本元素相比于C语言大大减少,比较特殊......
  • 逍遥自在学C语言 | 位运算符~的高级用法
    前言在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、相反数我们可以利用负数的补码性......
  • [每天例题]蓝桥杯 C语言 货物摆放
    货物摆放题目题目要求1.n=L×W×H2.本题的结果为一个整数。3.当n=4n=4时,有以下66种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。由此,我们可以知道L、W、H为n的因子思路分析1.由于n过大,所以使用longlongint进行声明。2.先求出n的所有因数,......
  • golang 指针自动解引用
    在Go中,对指针类型进行解引用操作可以使用星号(*)运算符。如果要自动解引用一个指针,可以使用点号(.)运算符来访问其字段或方法,Go会在必要时自动解引用该指针。例如,假设有一个结构体类型的指针变量p,其中包含一个整数字段x:typemyStructstruct{xint}funcmain(){......
  • c语言基础
    目录1、初识C语言1.1、第一个C语言程序1.2、变量与常量1.3、数据类型1.4、关键字2、分支与循环2.1、分支结构2.2、循环结构3、数组3.1、定义3.2、使用4、指针4.1、定义4.2、大小4.3、使用5、函数5.1、定义5.2、函数的分类5.3、形参与实参5.4、......
  • c语言贪吃蛇(2)关于蛇的函数封装
    hassnakenode():检测循环体内部是否含有蛇身结点,若有,则返回1(对应main输出蛇结点),否则判断点后移吗,再判断,之后返回0(不输出蛇结点)  addnode():创造新蛇结点,用malloc申请空间,并插入到尾结点之后。(尾插法)initsnake():创建初始头尾结点,malloc申请空间,方便后续蛇结点的添加,初始赋......
  • c语言贪吃蛇(1)地图实现
    采用循环输出来实现按照行和列的顺序两次for循环输出。代码:结果: ......