C语言基础——指针数组(指向数组的指针)

数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element)。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。定义数组时,一定要给出数组名,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址

#include<stdio.h>

void main(){
    
    int arr[] = {1,2,3,4,5,6};
    这里的变量名arr里面存放的有该数组的第一个数据的地址也就是arr[0]的地址值
    所以可以认为arr就是该数组的指针
    
}

常规遍历数组和指针遍历数组:

#include<stdio.h>

void main(){
    int arr[]={6,4,3,5,8,1};
    int len = sizeof(arr);
    for(int i=0;i<len;i++){
        printf("%d\n",arr[i]);常规遍历方式
    }
    for(int i=0;i<len;i++){
         printf("%d\n",*(arr+i));使用arr指针遍历方式
    }
    int *p_arr=arr;
    for(int i=0;i<len;i++){
         printf("%d\n",*(p_arr+i));额外使用新指针来遍历数组
         printf("%d\n",*p_arr++);额外使用新指针来遍历数组
    }
}

当然,你还可以通过指针来直接修改数组的元素的值。但是你不可能通过像指针修改基本类型的变量的数据内容那样去修改数组变量arr的地址值。

#include<stdio.h>

void main(){
    int a = 10;
    int *p_a = &a;
    a = *p+1;
    printf("%d\n",a);结果是11,变量a中的数据已经被改变了
    
    int arr[1,2];
    int *p_arr = arr;
    arr = *p_arr+1;这种操作是不允许的。
}

猜你喜欢

转载自blog.csdn.net/u013812502/article/details/81183847