一级指针:
指针就是地址,用这个地址可以找到它所在的数据
指针就是地址, 那么在使用的时候, 常常会简单的说,指针变量为指针
int *p1;// 申请了一个变量, 即在内存中开辟了一块内存, 存储数据
当一个函数的参数部分为一级指针的时候,函数能接收什么参数?
#include<stdio.h>
void test(int *p)
{}
int main()
{
int num;
int *p2 = #
int arr[10];
test(&num);//整型变量的地址
test(p2);//一级指针
test(arr);//数组首元素的地址(整形地址)
}
二级指针
二级指针就是指向一级指针的指针(n 级指针就是 指向 n-1 级指针的 指针)
指针的本质就是地址, 那么几级指针也只是一个地址, 唯一不同的就是寻址的结果(*p)
int n = 10;
int *p = &n; p就是整型变量n地址
int **pp= &p pp就是一级指针p的地址
当函数的参数为二级指针的时候,可以接收什么参数?
#include<stdio.h>
int main()
{
char c = 'b';
char*pc = &c;
char**ppc = &pc;
char* arr[10];
test(&pc); //字符的一级指针变量取地址
test(ppc); //字符的二级指针变量
test(arr); //指针数组(数组的每个元素都是char *)
return 0;
}
指针和数组
指针与数组的关系
当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。
如: char str[20], *ptr;
ptr=str;
ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,
也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立)
指针数组
定义:数组元素全为指针的数组。
int *arr[5];//指针数组是一个数组
对于这个数组来说,[]比*的优先级高,所以arr先和 [] 结合,结合起来是一个数组,
数组有5个元素,把元素个数去掉之后剩下int * 就是类型了,int * 是每个元素的类型。