一:字符指针变量
存放字符地址的指针
#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;
}