1.6 指针和数组
绝大多数情况下数组名为首元素地址
两个例外
1.&数组名 表示为整个数组的地址 2.sizeof(数组名) 表示整个数组的大小。
通过指针访问数组
#include<stdio.h> int main() { int arr[] = {1,2,3,4,5,6,7,8,9}; int* p = arr; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i < sz; i++) { printf("%d ", *(p + i)); } return 0; }
1.7 二级指针
#include<stdio.h> int main() { int a = 0; int* pa = &a;//pa存放a的地址 int** ppa = &pa;//二级指针ppa存放一级pa的地址 return 0; }
1.8 指针数组
指针是用来修饰数组的,指针数组是存放指针的数组。
#include<stdio.h> int main() { int a = 10; int b = 20; int c = 30; int* arr[] = { &a,&b,&c }; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; for (i = 0; i < sz; i++) { printf("%d ", *(arr[i])); } return 0; }
指针数组可以模拟二维数组
代码如下
#include<stdio.h> int main() { int arr1[4] = { 1,2,3,4 }; int arr2[4] = { 2,3,4,5 }; int arr3[4] = { 3,4,5,6 }; int* parr[3] = { arr1,arr2,arr3 }; int i = 0; for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 4; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }