推广 热搜: csgo  vue  2023  angelababy  gps  信用卡  新车  htc  落地  控制 

懂C语言滴解释一下二维数组a中的*(a 1)=a[1]

   2023-08-22 网络整理佚名1520
核心提示:因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。例如,在一个三维数组中,引用元素c[i][j][k]的地址计算最终将换成:*(*(*(c+i)+j)+k)。

C语言数组与指针的关系

指针和数组是C语言中两个非常重要的概念。 他们之间有着密切的关系。 利用这种关系可以增强处理数组的灵活性,加快运算速度。 本文重点介绍指针和数组的关系以及在编程中的应用。 1、指针和数组的关系 当一个指针变量被初始化为一个数组的名称时,就说该指针变量指向一个数组。 例如:char str[20],*ptr;ptr=str;ptr设置为数组str第一个元素的地址,因为数组名就是数组的首地址,也是第一个元素的地址数组的。 这时可以认为指针ptr就是数组str(反之亦然),这样就可以用指针来实现原来对数组的处理。 例如,对数组元素的访问可以通过下标变量或指针来访问。 ...全部

指针和数组是C语言中两个非常重要的概念。 他们之间有着密切的关系。 利用这种关系可以增强处理数组的灵活性,加快运算速度。 本文重点介绍指针和数组的关系以及在编程中的应用。 1、指针和数组的关系 当一个指针变量被初始化为一个数组的名称时,就说该指针变量指向一个数组。

例如:char str[20],*ptr;ptr=str;ptr设置为数组str第一个元素的地址,因为数组名就是数组的首地址,也是第一个元素的地址数组的。 这时可以认为指针ptr就是数组str(反之亦然),这样就可以用指针来实现原来对数组的处理。

例如,对数组元素的访问可以通过下标变量或指针来访问。 2、如果指向数组元素的指针定义如下:int a[10],*pa;pa=a; 那么p=&a[0]就是将数组第一个元素的地址赋给指针变量p。

事实上,C语言中的数组名就是数组的首地址,因此第一个元素的地址可以通过两种方式获得:p=&a[0]或p=a。 这两个方法在形式上类似,区别在于:pa是指针变量,a是数组名。 值得注意的是:pa是变量指针变量,a是常量。

因为一旦数组解释完毕,数组的地址也就固定了,所以a就不能改变了。 不允许使用a++、++a或a++=10的语句,但pa++、++pa、pa+=10是正确的。 可以看到此时指针和数组已经融为一体了。 3、指针与一维数组 要理解指针与一维数组的关系,首先要了解一维数组的存储组织以及编译系统对数组元素的访问方式。

一维数组是一个线性表,存储在连续的内存单元中。 C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给定),得到要访问的数组元素的单元地址,然后计算出访问的out cell地址的内容。

通常,数据类型的单位所占用的字节数称为扩展因子。 实际上,编译系统将数组元素的形式a[i]转换为*(a+i),然后执行操作。 对于一般数组元素形式:[],编译器将其转换为:*(+),其中下标表达式为:下标表达式*扩展因子。

整个公式的计算结果是一个内存地址,最终的结果是:*=。 可见C语言对数组的处理实际上就是转换为指针地址的操作。 数组与指针隐式组合。 因此,凡是能用下标完成的操作,都可以用指针来实现。 不带下标的数组名是指向该数组的指针。

4. 指针和多维数组 指针变量可以指向一维数组或多维数组。 然而,无论是在概念上还是在使用上,指向多维数组的指针都比指向一维数组的指针更复杂。 例如,在三维数组中,引用元素c[i][j][k]的地址计算最终将被替换为:*(*(*(c+i)+j)+k)。

了解了多维数组的存储形式以及访问多维数组元素的内部转换公式后,我们来看一下指针变量指向多维数组及其元素时的情况。 1 如果指向数组元素的指针变量描述如下:int a[3][4];int *p;p=a;p是指向整型变量的指针; p=a 使得 p 指向一个整数二维数组 a 的首地址。

*(*(p+1)+2)表示获取a[1][2]的内容; *p表示获取a[0][1]的内容,因为p是一个指向整型变量的指针; p++表示将p的内容加1,即p存储的地址将一个整数的字节数增加2,使p指向下一个整数a[0][1]。

2 指向由j个整数组成的一维数组的指针变量 当指针变量p不指向整数变量时,它指向包含j个元素的一维数组。 如果p=a[0],那么p++并不指向a[0][1],而是指向a[1]。

此时p的增量以一维数组的长度为单位。 5.指针和字符数组 C语言中很多字符串操作都是通过指向字符数组的指针和指针操作来实现的。 因为对于字符串来说,一般都有严格的顺序访问方式,使用指针可以打破这种访问方式,更加灵活地处理字符串。

另外,由于字符串以'\0'结尾,而'\0'的ASCII码为0,只是C语言的逻辑假值,所以可以直接作为判断结束的条件字符串的长度,而不需要根据字符串的长度来判断。 C语言中类似的字符串处理函数都是用指针来完成的,这使得程序运行得更快、更高效、更容易理解。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON