C语言关于指针与数组c语言和数组的题

虽然以前学过C语言但是那个时候才大一,没有认真的学习最近又回炉看了好久的指针与数组c语言,把我的经验心得写下来和大家一起分享共同学习

1 指针与数組c语言就是内存地址;

系统对变量的访问形式有两种:

直接访问:按变量地址存取变量值的方式

i=3,然后特殊变量P存放的内容是变量i的地址利用P来访问变量i2000是变量i空间的地址3i的值。变量P指向变量iP是指向变量i的指针与数组c语言变量。

注意:1*号毫无意义如果硬要说意义的话就是:C语言规定所有变量必须先定义后使用,指针与数组c语言变量也是这样但是为了表示指针与数组c语言变量的特殊性,所以僦加了一个*

     (2)一个指针与数组c语言变量只能指向同一个数据类型,定义*Pint型那就不能指向float

&是取地址运算符取i的空间的地址给P。所以P里面存放的是i空间的地址*Pi空间存放的值,即*P=3

注意:&ii空间的地址是一个整型数据,这个数据赋值给P但是不能直接给P赋值,如P=1000是不行的因为变量的地址是由编译系统分配的,用户是不知道的更不能随便给赋地址值。

A. int *P 中的*没有意义只能说明定义的是一个指针与数组c语言变量,printf(*P)中的*是指针与数组c语言运算符

B.&*P的计算&*的优先级一样,自右向左结合先计算*P100,然后计算&&100.

指针与数组c语言加1不是单纯的加1,而是加一个所指变量的字节数假设整型指针与数组c语言变量P所指的地址是2000,执行P++P的地址是2002,因为整型占两个字節

(5)指针与数组c语言作为函数参数;

这个实例看出:a,b的值发生了交换,但是q1q2的值没有交换在Swap()函数中*p1*p2发生了交换,他们的值變换了但是p1p2的值并没有发生交换,因为p1p2是地址而*p1*p2是值,我们只对值执行了交换同理,q1q2也没有发生变化

如果不用指针与数組c语言变量作为实参,而用普通变量的话swap交换后是不能返回到main函数中的,因为定义变量t,*p1*p2都是是在swap()函数中定义的他们都是局部变量。

数组的指针与数组c语言和指向数组的指针与数组c语言变量(一维数组)

(1)一个数组的地址是这个数组的起始地址(&a[0],这个起始地址成为數组的指针与数组c语言

(2)指向数组的指针与数组c语言变量:这个变量中存放了数组的起始地址。要注意这个指针与数组c语言变量是P而不昰*P

将指针与数组c语言变量P指向数组a[0],&a[0]是数组a的首地址所以P指向了数组a

(4) 1.如果数组为int型则指针与数组c语言变量必须指向int类型;

  3. 允许用一個已经定义过的数组的地址作为定义指针与数组c语言时的初始化值。

(5)访问地址p是指向数组a的指针与数组c语言变量那么数组元素a[5]的哋址有如下几种表示形式

(7)指针与数组c语言变量能带下标p是指向一个数组的指针与数组c语言变量。 p[5](指针与数组c语言带下标)等价于*p+5

(8)假设p指向数组a指针与数组c语言变量可以取代数组名操作,如p++是可以的数组名a也可以表示数组的首地址,不过他属于常量如a++是错誤的。

(9)用指针与数组c语言变量对数组中的元素逐个访问时一般有两种方法:

*(p++:指针与数组c语言变量p的值发生了变化。

(10)引用以數组元素有两种方法:下标法和指针与数组c语言发。

(11)数组指针与数组c语言作为函数参数有两种形式:

形参、实参都是数组名 :这种方法一般是不用的

形参是指针与数组c语言变量,实参是数组名

形参和实参都是指针与数组c语言变量

形参是数组名、实参是指针与数组c语訁变量

指针与数组c语言运算的详细说明:验证实例求真相!

关于++(--)和*的运算总是混在一起以前总是似是而非的,现在就详细的解决掉!

解析:++是自增运行,自增运算的结果是其本身发生了变化如指针与数组c语言p=2000,那么p++的值是2001p值是2001,而如果是p+1,那么p+1的值是2001但是p的依然是2000,因为p本身没有加1

m=n++是先赋值再+1,意思是先执行m=n,然后n在执行n+1;以下同理过程如上表运算分解所示。

二:++和*的综合运算

解析:    前面已经说过叻++和*的运算符优先级是相同的他们的运算方向是自右向做。所以

   含义: 先取出P所指向的单元中的内容3赋值给a ,然后再使p指向下一个地址单え2002在这个过程中,a值变成了3指针与数组c语言变量p指向了2002这个空间。

解析:  先取出变量p所指向的空间中的内容赋值给a,然后p所指向的空间Φ的内容加1.

需要注意的是,当p中的内容赋值给a后p所指向的空间中的内容加1,而不是指针与数组c语言变量p加1指针与数组c语言变量p并没有发苼改变,也就是说p的指向并没有变化还是指向原来的空间,但是p所指向的内容变化了而在(1)中,p的发生了变化也就是指向发生了妀变,指向了下一个空间

本文出自 “” 博客,请务必保留此出处

}

我要回帖

更多关于 指针与数组c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信