表达式必须包含指针类型_这篇文章有点长,但是只是想让你弄懂指向数组的指针 数组指针...

指向数组的指针

考虑以下程序:

#include<stdio.h>
  
int main()
{
  int arr[5] = { 1, 2, 3, 4, 5 };
  int *ptr = arr;
  
  printf("%pn", ptr);
  return 0;
}

在此程序中,我们有一个指针ptr指向数组的第0个元素。同样,我们也可以声明一个指针,该指针可以指向整个数组,而不是指向数组的一个元素。在讨论多维数组时,此指针很有用。句法:

data_type(* var_name)[size_of_array] ;

例:

int(* ptr)[10];

这里PTR是指针可以指向的10个整数的数组。由于下标的优先级比间接的优先级高,因此有必要将间接操作符和指针名称括在括号内。在这里,ptr的类型是“指向10个整数的数组的指针”。注意:指向数组第0个元素的指针与指向整个数组的指针完全不同。以下程序显示了这一点:

C ++

#include <iostream>
using namespace std;
int main()
{
    int *p; 
    int (*ptr)[5]; 
    int arr[5];
    p = arr;
    ptr = &arr; 
      
    cout << "p =" << p <<", ptr = "<< ptr<< endl;
    p++; 
    ptr++;
    cout << "p =" << p <<", ptr = "<< ptr<< endl;
      
    return 0;
}

C

#include<stdio.h>
  
int main()
{
    int *p; 
    int (*ptr)[5]; 
    int arr[5];
    p = arr;
    ptr = &arr; 
      
    printf("p = %p, ptr = %pn", p, ptr);     
    p++; 
    ptr++     
    printf("p = %p, ptr = %pn", p, ptr);
      
    return 0;

输出:

p = 0x7fff4f32fd50,ptr = 0x7fff4f32fd50
p = 0x7fff4f32fd54,ptr = 0x7fff4f32fd64

p:是指向数组arr的第0个元素的指针,而ptr是指向整个数组arr的指针。

  • p的基本类型为int,而ptr的基本类型为“ 5个整数的数组”。
  • 我们知道指针算术是相对于基本大小执行的,因此,如果我们编写ptr ++,则指针ptr将向前移20个字节。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值