一.指针和数组的区别

数组名是一个地址,而指针是一个左值。

二.指针数组和数组指针

int *p1[5]; 指针数组 //  []中的优先级高,故先定义了一个长度5的整型数组,然后数组中的每个元素都是指向int的指针。

int (*p2)[5];数组指针 //()和[]优先级一样,结合后从左往右,故先定义了一个指向整型的p2指针,它指向有5个元素的一维数组。

 1.指针数组 (example)

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    int e = 5;
    int *p1[5] = {&a, &b, &c, &d, &e};
    int i;

    for (i = 0; i < 5; i++)
    {
        printf("%d\n", *p1[i]);
    }

    return 0;
}
#include <stdio.h>

int main()
{
    char *p1[5] = {
    "让编程改变世界",
    "just do it",
    "一切皆有可能",
    "永不止步",
    "one more thing"
    };
    int i;
    for (i=0;i<5;i++){
        printf("%s\n",p1[i]);
    }
    return 0;
}

 2.数组指针(example)

#include <stdio.h>

int main()
{
    int temp[5] = {1, 2, 3, 4, 5};
    int (*p2)[5] = &temp;
    int i;

    for (i = 0; i < 5; i++)
    {
        printf("%d\n", *(*p2 + i));
    }

    return 0;
}
#include <stdio.h>

int main()
{
    int temp[5] = {1, 2, 3, 4, 5};
    int *p = temp;
    int i;

    for (i = 0; i < 5; i++)
    {
        printf("%d\n", *(p + i));
    }

    return 0;
}

 运算符优先级引用https://fishc.com.cn/forum.php?mod=viewthread&tid=67664&extra=page%3D1%26filter%3Dtypeid%26typeid%3D571

02-01 04:29
查看更多