1.一级指针
#include <stdio.h>
void print(int *p, int sz)//一级指针传参,直接对指针指向的数组进行操作
{
int i = 0;
for(i=0; i<sz; i++)
{
printf("%d\n", *(p+i));
}
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9};
int *p = arr; //一级指针指向数组首元素的地址
int sz = sizeof(arr)/sizeof(arr[0]);
//一级指针p,传给函数
print(p, sz);
return 0;
}
2.二级指针
#include <stdio.h>
void test(int** ptr)
{
printf("num = %d\n", **ptr);
}
int main()
{
int n = 10;
int*p = &n; //一级指针指向变量n的地址
int **pp = &p; //二级指针指向一级指针p的地址
test(pp); //二级指针传参
test(&p); //一级指针地址传参
return 0;
}
3.指针和数组
指针:它是个变量,用来存放地址,大小固定4/8字节。
数组:存放一系列同类型数据的变量。大小不定。
4.指针数组 和数组指针
指针数组:本质上是一个数组,数组里面的元素是指针。
数组指针:本质上是一个指针,指向的是一个数组的首元素地址。