C语言 数组指针

**

一点点记录,不是教学

**
/* 下面说了那么多,越看越晕,不看也行。
* 总结就是
* 想要指向变量a的指针 那就 int * p= &a; 而普通变量名a不是地址,要加取地址符&
* 用法 *p == a;
* 想要指向数组a[]的指针 那就 int * p= a; 因为数组的名字a就是地址
* 用法 p[i] == a[i]; 相当于给数组a的名字换成了p
**/

//
// Created by Tony on 2023/12/10.
//
#include <stdio.h>
int main(){
    /* 下面说了那么多,越看越晕,不看也行。
     * 总结就是
     * 想要指向变量a的指针 那就 int* p= &a;   而普通变量名a不是地址,要加取地址符&
     * 用法 *p == a;
     * 想要指向数组a[]的指针 那就 int* p= a; 因为数组的名字a就是地址
     * 用法 p[i] == a[i]; 相当于给数组a的名字换成了p
     **/


    /*变量指针的定义与使用
     * 下面两种写法是等价的
     * int a;
     * int* p = &a;
     * 和
     * int a;
     * int* p;
     * p = &a;
     * 等价,写法不同
     * */
    int a = 123;
    int *p1=&a;
    *p1 = 654; /*相当于修改了a的值为654*/
//    printf("a=%d\n",a);

    int b = 231;
    int *p2;
    p2 = &b;

    /*数组指针的定义与使用*/


    /* C语言让指针指向数组的两种方法
     * 第一种方法:将指针指向数组名
     * 第二种方法:将指针指向数组的第一个元素的地址
     * 这两种方法都可以的原因是数组的第一个元素的地址就是数组的地址
     *
     * */
    int a1[]={1,2,3};
    int *pa,*pb;//定义两个指针
    pa=a1;//指针pa直接指向数组名
    pb=&a1[0];//指针pb指向数组a的第一元素的地址
//    printf("pa=%p\n",pa);
//    printf("pb=%p",pb);

    /*C语言 数组的指针和指向数组的指针变量*/
    /* 对于数组a[]  来说 int* p = a; 和 int* p = &a 的区别
     * 说实话没区别,a 和 &a 数值上都是同一个地址,意义不同而已*/

    int arr[3]={31,24,74};

    /*指向数组的指针变量*/
    int* p3 = arr; /*arr存放的是数组首元素的地址*/

    /* 使用指针读取数组 p3[2]  和   *(p+2) 是等价的,写法不同而已,
     * 都是表示 数组arr[]的第3个元素  */
    printf("数组指针p3[2] = %d\n",p3[2]);
    printf("数组指针*(p3+2) = %d\n",*(p3+2));

    int* p4 = &arr; /*会报黄色警告*/
    printf("数组指针p4[2] = %d\n",p4[2]);

    /*数组的指针*/
    int (*p5)[3] = &arr;
    printf("数组指针*(*p5+2) = %d\n",*(*p5+2));


    /*
     * 注意&arr 和 arr虽然数值上相等,都是地址,但意义不同
     *  arr指的是这个数组的 第一个元素 的首地址。
     *  &arr 指的是这 整个数组 的首地址。
     * */

    return 0;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值