📜  指向数组的指针和指针数组的区别

📅  最后修改于: 2021-09-11 04:01:10             🧑  作者: Mango

指向数组的指针

指向数组的指针也称为数组指针。我们使用指针来访问数组的组件。

int a[3] = {3, 4, 5 }; 
  int *ptr = a; 

我们有一个指针 ptr 指向数组的第 0 个组件。我们同样可以声明一个指针,它可以指向整个数组,而不仅仅是数组的单个组件。
语法

data type (*var name)[size of array];

数组指针的声明:

// pointer to an array of five numbers
 int (* ptr)[5] = NULL;     

上面的声明是指向五个整数数组的指针。我们使用括号来发音指向数组的指针。由于下标比间接具有更高的优先级,因此将间接运算符和指针名称括在括号内是至关重要的。

例子:

// C program to demonstrate
// pointer to an array.
  
#include 
  
int main()
{
  
    // Pointer to an array of five numbers
    int(*a)[5];
  
    int b[5] = { 1, 2, 3, 4, 5 };
  
    int i = 0;
  
    // Points to the whole array b
  
    a = &b;
  
    for (i = 0; i < 5; i++)
  
        printf("%d\n", *(*a + i));
  
    return 0;
}
输出:
1
2
3
4
5

指针数组

“指针数组”是指针变量的数组。它也被称为指针数组。
语法

int *var_name[array_size];

指针数组的声明:

int *ptr[3];

我们可以制作单独的指针变量,它们可以指向不同的值,或者我们可以制作一个可以指向所有值的整数指针数组。

例子:

// C program to demonstrate
// example of array of pointers.
  
#include 
  
const int SIZE = 3;
  
void main()
{
  
    // creating an array
    int arr[] = { 1, 2, 3 };
  
    // we can make an integer pointer array to
    // storing the address of array elements
    int i, *ptr[SIZE];
  
    for (i = 0; i < SIZE; i++) {
  
        // assigning the address of integer.
        ptr[i] = &arr[i];
    }
  
    // printing values using pointer
    for (i = 0; i < SIZE; i++) {
  
        printf("Value of arr[%d] = %d\n", i, *ptr[i]);
    }
}
输出:
Value of arr[0] = 1
Value of arr[1] = 2
Value of arr[2] = 3

示例:我们同样可以创建一个指向字符的指针数组来存储字符串列表。

#include 
  
const int size = 4;
  
void main()
{
  
    // array of pointers to a character
    // to store a list of strings
    char* names[] = {
        "amit",
        "amar",
        "ankit",
        "akhil"
    };
  
    int i = 0;
  
    for (i = 0; i < size; i++) {
        printf("%s\n", names[i]);
    }
}
输出:
amit
amar
ankit
akhil
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程