当前位置:网站首页 > 技术博客 > 正文

c语言指针数组和数组指针怎么用

如果一个数组中的所有元素保存的都是指针,那么我们就称它为

指针数组

。指针数组的定义形式一般为:

的优先级高于,该定义形式应该理解为:

括号里面说明是一个数组,包含了个元素,括号外面说明每个元素的类型为。



除了每个元素的数据类型不同,指针数组和普通数组在其他方面都是一样的,下面是一个简单的例子:

运行结果:


16, 932, 100


16, 932, 100



arr 是一个指针数组,它包含了 3 个元素,每个元素都是一个指针,在定义 arr 的同时,我们使用变量 a、b、c 的地址对它进行了初始化,这和普通数组是多么地类似。



parr 是指向数组 arr 的指针,确切地说是指向 arr 第 0 个元素的指针,它的定义形式应该理解为,括号中的表示 parr 是一个指针,括号外面的表示 parr 指向的数据的类型。arr 第 0 个元素的类型为 int *,所以在定义 parr 时要加两个 *。



第一个 printf() 语句中,arr[i] 表示获取第 i 个元素的值,该元素是一个指针,还需要在前面增加一个 * 才能取得它指向的数据,也即 *arr[i] 的形式。



第二个 printf() 语句中,parr+i 表示第 i 个元素的地址,*(parr+i) 表示获取第 i 个元素的值(该元素是一个指针),(parr+i) 表示获取第 i 个元素指向的数据。



指针数组还可以和字符串数组结合使用,请看下面的例子:

运行结果:


c.biancheng.net


C语言中文网


C Language



需要注意的是,字符数组 str 中存放的是字符串的首地址,不是字符串本身,字符串本身位于其他的内存区域,和字符数组是分开的。



也只有当指针数组中每个元素的类型都是时,才能像上面那样给指针数组赋值,其他类型不行。



为了便于理解,可以将上面的字符串数组改成下面的形式,它们都是等价的。
























版权声明


相关文章:

  • 软件测试用数据库干什么2025-08-03 08:30:00
  • cas单点登录跨域怎样解决2025-08-03 08:30:00
  • kvm虚拟化技术实战与原理解析2025-08-03 08:30:00
  • 数据库设计需求分析的意义2025-08-03 08:30:00
  • vncserver设置开机自启动2025-08-03 08:30:00
  • cglib底层实现2025-08-03 08:30:00
  • java虚拟机命令配置2025-08-03 08:30:00
  • 监控linux网卡流量的命令2025-08-03 08:30:00
  • 消息中间件的意义和应用场景2025-08-03 08:30:00
  • uint16转uint82025-08-03 08:30:00