C++: 指针微探(指针与数组)

1: 指针与数组

初始化指针数组,隐式指针转换


int main() {

        cout << "C++指针数组" << endl;
        int val1[5];
        for (int i = 0; i < 5; ++i) {
            val1[i] = i;
        }

        //近似理解为 int *p = &val[0]; 在定义指针的时候,int *p 它的右值应该是一个地址
        int* p5 = val1;

        ///这里发生了隐式指针转换:数组自动转换为指向第一个元素的指针
        printf("%d\n", *p5); ///指针p指向val的第一个元素,即val[0]

        int t = 5;
        while (t--) {
            
            // 可以直接对指针进行加减运算,就和迭代器一样
            printf("%d\n", *(p5++));///输出0-5
        }
            
        ///指针可以做差:
        int* p6 = &val1[10], * p7 = &val1[20];
        printf("%d\n", p7 - p6); //10
        printf("%d\n", p6 - p7); //-10

        ///还可以比比较大小:
        printf("%d\n", p6 < p7 ? p7 - p6 : p6 - p7); //10


}

打印结果:
   C++指针数组
0
0
1
2
3
4
10
-10
10

结论
1:  在定义指针的时候,int *p 它的右值应该是一个地址 所以指针初始化应该这样写
  int *p = new int[5];

2: *p ---》指针p指向数组val 的第一个元素值 即:val[0]
      
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值