一:字符指针变量
存放字符地址的指针
#include<stdio.h> int main() { char ch = 'a'; char* p = &ch;//p就是字符指针变量 *p = 'b';//解引用操作 printf("%c\n", ch); return 0; }
#include <stdio.h> int main() { char* p = "abcdef";//不是将abcdef\0字符串放在变量p中,而是首字符a的地址放在p中 printf("%s", p); return 0; }
二:数组指针变量
指针数组是数组,存放的是指针的数组
int *p[]
类比学习数组指针
字符指针:存放的是字符的地址,如:
char ch=‘q’,char p=&ch;
整型指针:存放的是整型的地址,如:
int a=0;intp=&a;
数组指针:存放的是数组的地址,如:
int arr[10]={0};int (*p)[10]=&arr.
int (*p)[10]=&arr:
int 说明p指向的数组元素是int型,p是数组指针变量名,[10]说明p指向数组元素的个数
#include <stdio.h> int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); int(*p)[10] = &arr; int i = 0; for (i = 0; i < sz; i++) { //printf("%d ", *(*p + i));//*p得到的是数组名 printf("%d ", (*p)[i]); } return 0; }
三:函数指针变量
函数指针变量是存放函数地址的指针。
&数组名,表示数组的地址
数组名,表示数组首元素的地址
而对于函数,&函数名,和函数名都表示函数的地址。
函数指针变量的使用
1:函数指针变量类型解析
函数指针变量类型:int (*p)(int int)
2:函数指针变量的使用:
#include <stdio.h> int Add(int x, int y) { return x + y; } int main() { int (*p)(int,int) = &Add;// //int ret = (*p)(2, 3);//p是函数指针变量 int ret = p(2, 3); printf("%d ", ret); return 0; }