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

指针数组:

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

复制代码
copy
//指针数组
#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;
}
复制代码

数组指针:

指向数组的指针

复制代码
copy
//数组指针
#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;
}
复制代码

对数组指针的简单练习

复制代码
copy
#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;
}
复制代码

 

posted @   卡卡罗特kk  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
展开