admin 管理员组

文章数量: 1184232


2024年3月14日发(作者:couchdb数据库)

C语言指针在数组和函数中的应用与常见错误

解析

论文导读::语言中储备空间的地址简称为指针。用scanf、puts函数输

入数据时。论文关键词:C语言,指针及应用,指针与数组,函数,实例

解析

一、指针的有关概念

1、指针的概念与实质

数据在运算机中储备时都占用一定大小的储备空间,每个储备空间对应一

个地址编号,运算机通过该编号找到储备空间以访问其中的内容。C语言

中储备空间的地址简称为指针,指针的实质确实是某个储备空间的地址(编

号)。指针和该指针所指向的储备空间中的内容是有本质区别的。

2、变量的指针、指针变量与指向的概念

在C语言中,变量所占用的内存单元的地址就称之为该变量的指针。变量

有三要素:名称、数据类型、当前值。指针变量确实是存放指针值的变量。

即指针变量所在的空间储备的是另外一个储备空间的地址,而非一样数据。

变量名表示了储备空间的名称及其中的值并参与相关运算。

指针变量的定义格式为:数据类型 *变量名称;

指针是C语言的专门数据类型。定义时,变量名前面的“*”表示该变量属

于指针变量,“数据类型”表示指针变量所指向的储备空间中存放的数据本

身的类型。指针本身的类型和指针所指向的空间中的数据类型是有区别的。

例如杂志网,int *p;指针变量p的类型确实是int*, 而p所指向的目标的

类型是int;当指针变量储备了另外一个同“数据类型”的一样变量的地址

时,称该指针变量“指向”了该变量。为了便于明白得,被“指向”的变

量通常称之为“目标变量”。指针变量只能指向定义时“数据类型”所标识

的数据类型的目标变量。例如:int a=10,*p=&a;。

3、一维数组的指针与指向一维数组的指针变量

一维数组是同类变量的有限集合,各元素占用连续的储备单元。因此,一

维数组的指针分为首指针(入口地址)和元素指针。首指针确实是该集合

中第一个元素所在空间的指针,可用数组名直截了当表示之。数组的任何

一个元素相当于同类的简单变量,元素的指针有两个表示形式:

⑴绝对地址,用求地址运算符&直截了当求得,格式为:&数组名[n]。(0

≤n<元素的个数)

⑵相对地址,是相关于数组首地址的偏移量,表示为:数组名+n。(0≤n<

元素的个数)

指针变量可指向同“数据类型”的任意目标变量或同“数据类型”任何数

组元素。

4、二维数组的行指针和列指针与指向二维数组的指针变量

二维数组可看着多个一维数组的集合。运算机中二维数组是按行存放的(元

素的储备单元地址是连续的),因此也能够把二维数组看成是专门的一维数

组。二维数组的指针分为行指针和列指针。为了便于明白得,能够形象的

将二维数组明白得为具有行列结构的二维表。二维数组的每一行都有一个

行指针。每一行相当于一个同类的一维数组,每行的元素也有各自的指针,

简称为列指针。二维数组的行指针、列指针、元素的指针可表示如下(便于

描述,设有定义:int a[M][N]):

⑴行指针:a+n杂志网,(0≤n<M,M为行数),n=0时表示第一行的行指针,

依次类推。

⑵列指针:*a+n或a[0]+n,(0≤n<M*N,N为列数),n=0时表示第一个

元素的指针,n=1时表示第二个元素的指针,依次类推,数组所有元素的地

址成线性关系。列指针即元素的指针。

⑶第m行第n列元素的指针:a[m]+n或&a[m][n]或*(a+m)+n,(0≤m<M,

0≤n<N)。

指向列指针(或元素)的指针变量和指向一样同类变量或一维数组元素的指

针变量一样。指向二维数组的行指针的指针变量,称之为行指针变量,有

别于列指针变量。行指针变量定义格式为:

数据类型 (*变量名)[N];/*小括号()、*、方括号[]差不多上不能省略的,N

为元素的个数*/


本文标签: 指针 变量 数组 储备