📜  指向数组的指针与指针数组之间的区别

📅  最后修改于: 2021-05-26 00:07:11             🧑  作者: 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基础课程》。