美文网首页
C语言-指针和数组

C语言-指针和数组

作者: 我阿郑 | 来源:发表于2021-12-11 13:17 被阅读0次

指针加减法

指针加法:后移n个元素
指针减法:前移n个元素

int main(int argc, const char * argv[]) {
    int arr[4] = {1,2,3,4};
    int* p = arr;
    p += 1; // 后移一个元素
    printf("后移一个元素:%d \n", *p);

    p -= 1; // 前移一个元素
    printf("前移一个元素:%d \n", *p);
 }
 
// 打印结果
后移一个元素:2 
前移一个元素:1    

指针和数组

数组名是数组的首元素地址,但它是一个常量。

int main(int argc, const char * argv[]) {
    
    // 定义数组
    int arr[] = {1,2,3,4,5};
    // 打印数组a的地址
    printf("arr=%p\n",arr);
    // 打印数组a首元素的地址
    printf("&arr[0]=%p\n",&arr[0]);
    
    // arr = 10; // ❌ error, 数组名只是常量,不能修改
    
    // 定义int类型指针变量p
    int *p;
    // 变量p里面存放的是数组的地址
    p = arr;
    
    printf("p指针:%p\n",p);
    printf("arr:%p\n",arr);
    
    // 用p指向数组中arr的任意一个元素,下面两种写法是一样的
    p = arr + 3
    p = &arr[3];
    
    // 修改数组元素
    arr[3] = 10;
    *(arr+3) = 10;
    
    // 遍历数组
    for(int i=0; i<5; i++)
    {
        printf("第%d个元素:%d \n",i, arr[i]);
    }

    for(int* p= arr; p<arr+5; p++) // 注: arr+5
    {
        printf("元素:%d \n", *p);
    }
    
    // ⚠️ 使用指针访问数组元素时,不能越界
    *(p + 5) = 99; // 错误❌,严重的隐患
    return 0;
}

// 打印结果
a=0x7ffeefbff590
&a[0]=0x7ffeefbff590

指针数组

指针数组:它是一个数组,这个数组里的每个元素都是指针类型。

int main(int argc, const char * argv[]) {

    // 指针数组
    int *pArray[3];
    int a1 = 1;
    int a2 = 2;
    int a3 = 3;
    
    int *p1 = &a1;
    int *p2 = &a2;
    int *p3 = &a3;
    
    pArray[0] = p1;
    pArray[1] = p2;
    pArray[2] = p3;
    
    // 也可以直接向这样写
    pArray[0] = &a1;
    pArray[1] = &a2;
    pArray[2] = &a3;
    
    return 0;
    
}

也可以定义指针数组的同时赋值

    int a1 = 1;
    int a2 = 2;
    int a3 = 3;

    // 数组里存的元素都是地址
    int *pArray[3] = {&a1, &a2, &a3};
    
        // 获取地址对应的数据
    // sizeof(pArray)/sizeof(pArray[0]) 就是计算数组中元素个数
    for (int i = 0; i < sizeof(pArray)/sizeof(pArray[0]); i++) {
        printf("%d\n",*pArray[i]);
    }

相关文章

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • C语言 - 中

    总目录 前言 本文介绍C语言的指针:一、指针介绍二、指针使用三、数组指针和指针数组 函数指针和指针函数 环境 1...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 指针数组&数组指针

    本节继续讨论C语言中的指针。 指针数组&数组指针 先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个...

  • 指针与数组的区别和联系

    原文地址:指针与数组的区别和联系作者:zhenhuaqin 一.指针与数组的联系: 指针与数组是C语言中很重要的两...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • C语言数组和指针

    1.const 关键字声明后数据不能修改 2.sizeof 数组名指的是整个数组的大小(以字节为单位) size...

网友评论

      本文标题:C语言-指针和数组

      本文链接:https://www.haomeiwen.com/subject/aaxhfrtx.html