如何理解C语言中指针和数组名的区别与联系

我们知道数组名就是指针,可是两者有什么统一性呢,有什么联系呢?可不成以互相转换呢?下面我就来具体地说一说。

工具/原料

  • 一台电脑
  • C说话的编译器

方式/步骤

  1. 1

    数组名是个指针常量,保留的是数组的首地址,即“数组第一个元素的肇端地址”,为什么这么说呢?因为数组的元素可能是整形,字符型,假如是整形,那么一个元素占4个字节,而每个字节都对应一个地址,那么数组名保留的地址是哪个呢?是第一个元素的第一个字节的地址。

  2. 2

    既然数组名是指针了,那么可不成以将数组名赋给一个指针?

    然后用这个指针来操作整个数组呢?

    谜底是必定的。

  3. 3

    数组名是指针,可以利用a[i]这样的操作,那么同类型指针p可不成以利用p[i]来取代 *(p+i) 呢?

    谜底是必定的。

  4. 4

    诠释一下,指针进行p+1操尴尬刁难于分歧类型的p是分歧的,具体看存储分歧类型的数据需要几多个字节。

    两个不异类型的指针只能进行减操作;相加,相乘和相除是没有意义的。

  5. 5

    相信大师已经知道了数组名和指针的不异的处所;

    下面说下分歧的处所:

    数组名半斤八两于  类型* const p;

    通俗指针是   类型* p;

    也就是说,数组名a只有“可读权限”,没有“可写权限”,是指针常量。

    a++;    a = p; 等等均是不成以的。

    而通俗指针是可以的。

注重事项

  • 注重区分指针和数组名的区别和联系
  • 发表于 2019-07-01 20:04
  • 阅读 ( 145 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论