指针变量的定义:类型名 * 指针变量名
指针变量名是p,不是*p , *是指针声明符
定义指针时,先将它的初值置为空
char *s = NULL
直接访问:通过变量名访问
* 间接访问运算符,访问指针所指向的变量
*p:指针变量 p所指向的变量
字符数组和字符指针的重要区别:
char sa[] = "This is a string";
char *sp= "This is a string";
如果要改变数组sa所代表的字符串,只能改变数组元素的内容
如果要改变指针sp所代表的字符串,通常直接改变指针的值,让它指向新的字符串
scanf("%s",str);
输入参数:字符数组名,不加地址符
遇回车或空格输入结束,并自动将输入的一串字符和 ‘\0’送入数组中
gets(str)
遇回车输入结束,自动将输入的一串字符和 ‘\0’送入数组中
puts(str)输出字符串之后,会自动换行
函数指针:每个函数都占用一段内存单元,它们有一个入口地址(起始地址)
在C语言中,函数名代表函数的入口地址。
我们可以定义一个指针变量,接收函数的入口地址,让它指向函数,这就是指向函数的指针,也称为函数指针
函数指针定义的一般格式为:
类型名 (*变量名)( 参数类型表);
类型名指定函数返回值的类型,变量名是指向函数的指针变量的名称。
例如:
int (* funptr)( int, int);
定义一个函数指针funptr,它可以指向有两个整型参数且返回值类型为int的函数
通过函数指针调用函数的一般格式为:
(*函数指针名)(参数表)
例如:
int fun(int x, int y);
int (*funptr)(int, int);
funptr= fun;
(*funptr)(3, 5);