一.指针和数组的区别
数组名是一个地址,而指针是一个左值。
二.指针数组和数组指针
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