提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1. 指针
在C语言中变量在内存的编号成为地址,地址就是C语言中指针。
2. 指针变量与使用
#include <stdio.h>
int main(){
int a=5;
int *p1=&a
*p1=10;
printf("%d",a);
return 0;
}
这里定义了一个变量a ,将a的地址传递给a ,我们通过*p1 修改a,*p1,一次解引用4个字节。
3. 指针运算
3.1 指针±整数
int main(){
int arr[5]={1,2,3,4,5};
int *p1=a;
*(p1+1)=10;
printf("%d",*(p1+1));
return 0;
}
这里定义了一个数组arr,将arr首元素的地址传递给p1,p1+1表示从首元素跳到第二个元素。
3.2 指针-指针
int main(){
int arr[5]={1,2,3,4,5};
int *p1=a+3;
int *p2=a;
printf("%d",p2-p1);
return 0;
}
指针-指针表示他们之间元素个数的绝对值。
4. 数组
int main(){
int arr[5]={1,2,3,4,5};
int *p1 =&arr[0]
return 0;
}
数组名一般表示首元素地址,除了sizeof(数组名)和&数组名。
5. 特殊指针
5.1 数组指针
int main(){
int arr[5]={1,2,3,4,5};
int (*p1) [5]=&arr;
return 0;
}
指向数组的指针。
5.2 指针数组
int main(){
char* p1[2] ={"hello","world"};
return 0;
}
数组里面存放指针。
5.3函数指针
int add(int x,int y){
return x+y
}
int main(){
int (*p1)(int,int)=add;
return 0;
}
&函数名=函数名。
6. 二级指针
int main(){
int a =5;
int *p1=&a;
int **p2=&p1;
return 0;
}
存放指针地址的指针。
7. 总结
最后画一张图总结上述内容。