指针数组和数组指针的详细解答

简介: /**首先弄明白什么是指针数组,什么又是数组指针。 指针数组: 类型名 *数组名[数组长度] 如: int *p[8]; 因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p 的元素是指向整型数据的指针。
/**首先弄明白什么是指针数组,什么又是数组指针。
    指针数组:
        类型名  *数组名[数组长度]
        如:  int *p[8];
    因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p
    的元素是指向整型数据的指针。相当于定义了8个整型指针变量。在此,p就是
    数组元素为指针的数组,本质为数组。

    数组指针:
        类型名 (*指针名)[数组长度]
        如:int (*p)[8];
    p先与*号结合,形成一个指针,该指针指向的是有8个整型元素的数组,
    p即为指向数组首元素地址的指针,其本质为指针。

**/

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arr[4][4];
    int i,j,k=0;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            arr[i][j]=k;
            k++;
        }
    }
    int *p1[4];
    int (*p2)[4];

    for(k=0;k<4;k++){
        p1[k]=arr[k];
    }

    printf("\n使用指针数组的方式访问二维数组arr\n");

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("arr[%d][%d]=%d\t",i,j,*(p1[i]+j));
            ///p1[i]+[j]即第i行第j列的元素地址
        }
    }
    printf("\n-----------------------------------\n");
    p2=arr;
    printf("\n使用数组指针的方式访问二维数组arr\n");

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("arr[%d][%d]=%d\t",i,j,*(*(p2+i)+j));
        }
    }


    return 0;
}

运行结果:

目录
相关文章
|
1月前
|
C语言
指向结构体数组的指针
指向结构体数组的指针
13 2
|
1月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
20 0
|
1月前
|
C语言 C++
数组元素的指针
数组元素的指针
10 0
|
1月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
10 0
|
1月前
|
存储 C语言 C++
c语言从入门到实战——数组指针与函数指针
数组指针和函数指针都是指针类型,但是它们指向不同的数据类型。 数组指针:数组指针指向的是数组类型。 函数指针:函数指针指向的是函数类型。 数组指针和函数指针是C语言中的两种重要指针类型。数组指针指向一个数组,可以用来访问和修改数组中的元素;而函数指针则指向一个函数,可以用来调用该函数。两者在语法和用法上有所不同,需要仔细区分。正确理解和使用它们可以提高程序的效率和可维护性。
33 0
C4.
|
1月前
|
算法 安全 程序员
C语言中如何通过指针引用数组
C语言中如何通过指针引用数组
C4.
20 0
C4.
|
1月前
|
存储 算法 C语言
C语言的指针数组与多重数组
C语言的指针数组与多重数组
C4.
22 0
|
29天前
|
存储 程序员 C++
指针数组和多重指针
指针数组和多重指针
17 2
|
29天前
|
存储 程序员 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
14 1
|
29天前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
14 1