首页 > 其他分享 >简单认识指针数组与数组指针

简单认识指针数组与数组指针

时间:2022-12-17 21:33:09浏览次数:45  
标签:arr 认识 ++ int 数组 printf 指针

指针数组:

指针数组就是一个存放指针的数组。

//指针数组
#include <stdio.h>
int main()
{
    int a[5] = { 1,2,3,4,5 };
    int b[] = { 2,3,4,5,6 };
    int c[] = { 3,4,5,6,7 };
    int* arr[] = { a,b,c };
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        int j = 0;
        for (j = 0; j < 5; j++)
        {
            printf("%d ", *(arr[i] + j));
            //printf("%d", arr[i][j]);//(相当于模拟的二维数组)
        }
        printf("\n");
    }
  return 0;
}

数组指针:

指向数组的指针

//数组指针
#include <stdio.h>
int main()
{
    int arr[10] = { 1,2,3,4 };
    printf("%p\n",arr);//arr数组名是首元素的地址,arr就是arr[0]的地址
    int(*p)[10] = &arr;//数组指针.指向的是这个数组的地址
    printf("%p\n", p); 
    //虽然他们的存放的内容一样,但两个指针的类形不一样
    return 0;
}

对数组指针的简单练习

#include <stdio.h>
void print1(int arr[3][5], int r, int t)
{
    int i = 0;
    for (i = 0; i < r; i++)
    {
        int j = 0;
        for (j = 0; j < t; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}
void print2(int(*p)[5],int r, int t)
{
    int i = 0;
    int j = 0;
    for (i = 0; i < r; i++)
    {
        for (j = 0; j < t; j++)
        {
            printf("%d ", *(*(p+i) + j));//数组名代表首元素的地址,二维数组名代表“第一行”的地址
        }
        printf("\n");
    }
}
int main()
{
    int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
    print1(arr, 3, 5);
    print2(arr, 3, 5);
    return 0;
}

 

标签:arr,认识,++,int,数组,printf,指针
From: https://www.cnblogs.com/qiyuancc/p/16989567.html

相关文章