1、字符串数组和字符串指针
字符串存放在栈区,字符串可以被更改
字符串指针:
char *p = “hello world”
指向字符串的首地址,字符串存放在数据区,又被称为字符常量,字符串不可更改
2、指针常量与常量指针
const int a =10; //a的值永远等于10,不能被更改
int a =10;
int * const pa = &a;//常量指针,指向不可更改,指向的数据可以更改
const int * pa = &a;//指针常量,指向可以更改, 指向的数据不可更改
3、指针数组与数组指针
指针数组
数组中存放的元素都是指针,是一个数组
char * arr[5];//数组中每一个元素都是char *型的指针
数组指针
指针的类型是一个数组,是一个指针
char (*pa)[5];//指向一个有5个元素数组的指针变量(pa的类型是一个有5个元素的数组),
//一般与二维数组连用
4、指针函数与函数指针
指针函数
函数的返回值类型是一个指针,是一个函数 格式: 返回值类型 * 函数名(形参)
注意:返回的地址一定要有效,不要返回子函数中局部变量地址
int * add(int *a,int *b)
{
// int sum = *a+*b ; 错误
static int sum = *a+*b; //静态变量
return sum;
}
int main()
{
int a=10,b=20;
int *p =sum(&a,&b);
}
函数指针
是一个指针,指针的类型是一个函数,指向一个固定类型的函数
定义:返回值类型 (*指针变量)(形参);
赋值: 函数指针变量 = 函数名;
调用:函数指针变量(实参);