首页 科技 军事 财经 教育 体育 房产 健康 汽车 安全 热点 人才 推选

财经

旗下栏目:

C 指针 菜鸟教程

发布时间:2019-08-24 来源:原创/投稿/转载 作者:admin 人气:

  学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。

  正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的******,它表示了在内存中的一个******。请看下面的实例,它将输出定义的变量******:

  通过上面的实例,我们了解了什么是内存******以及如何访问它。接下来让我们看看什么是指针。

  指针是一个变量,其值为另一个变量的******,即,内存位置的直接******。就像其他变量或常量一样,您必须在使用指针存储其他变量******之前,对其进行声明。指针变量声明的一般形式为:

  在这里,type是指针的基类型,它必须是一个有效的 C 数据类型,var-name是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:

  所有实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,对应指针的值的类型都是一样的,都是一个代表内存******的长的十六进制数。

  不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。

  使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量******赋值给指针、访问指针变量中可用******的值。这些是通过使用一元运算符*来返回位于操作数所指定******的变量的值。下面的实例涉及到了这些操作:

  在变量声明的时候,如果没有确切的******可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

  在大多数的操作系统上,程序不允许访问******为 0 的内存,因为该内存是操作系统保留的。然而,内存****** 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。

  在 C 中,有很多指针相关的概念,这些概念都很简单,但是都很重要。下面列出了 C 程序员必须清楚的一些与指针相关的重要概念:

  指针是一个变量,其值为另一个变量的******,即,内存位置的直接******。就像其他变量或常量一样,您必须在使用指针存储其他变量******之前,对其进行声明。

  要理解指针就要先理解计算机的内存。计算机内存会被划分为按顺序编号的内存单元。每个变量都是存储在内存单元中的,称之为******。

  指针是一个变量,所以可以使用任何合法的变量名。在大多数的操作系统上,程序不允许访问******为 0 的内存,因为该内存是操作系统保留的。

  然而,内存****** 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。

  所有指针在创建时都要初始化,如果不知道他指向什么就将 0 赋值给他。必须初始化指针,没有被初始化的指针被称为失控指针(野指针)。

  实例定义了变量 a 和指针变量 p。p = 表示指针变量指向了变量 a,p 中存放的******为 a 的****** &a,*p 所指的是 p 中存放的****** a 内存单元中的值。

  -- 首先从 p 处开始,先与*结合,所以说明 p 是一个指针, 然后再与 int 结合, 说明指针所指向的内容的类型为 int 型。所以 p 是一个返回整型数据的指针。

  -- 首先从 p 处开始,先与[] 结合,说明 p 是一个数组, 然后与 int 结合, 说明数组里的元素是整型的, 所以 p 是一个由整型数据组成的数组。

  -- 首先从 p 处开始, 先与 [] 结合, 因为其优先级比 * 高,所以 p 是一个数组, 然后再与 * 结合, 说明数组里的元素是指针类型, 然后再与 int 结合, 说明指针所指向的内容的类型是整型的, 所以 p 是一个由返回整型数据的指针所组成的数组。

责任编辑:admin