字符指针
一、概念
1.char*类型的变量即为字符指针变量
2.简单的字符指针变量运用
这里输出hello bit. ,不要误认为pstr是把整个字符"hello bit."存储了,但是pstr实际上存储的是首字符'h'的地址。
二、进阶
这里为什么输出的结果是这样呢?
1.首先的话:C/C++中操作系统会把常量字符串存储一块单独的区域,当⼏个指针指向同⼀个字符串的时候,它们实际会指向同⼀块内存。
2.但是⽤相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。
3.所以str1和str2不同,str3和str4相同。
数组指针
一、概念
1.指向数组的指针,int (*p)[10];
p先和*结合,说明p是⼀个指针变量,然后指向的是⼀个
⼤⼩
为10个整型的数组。所以
p是⼀个指针,指向⼀个数组,叫 数组指针。
2.初始化:int (*p)[10]=&arr;
函数指针
一、概念
1.函数有地址吗
答案是有的。函数名就是函数的地址,当然也可以通过 &函数名 的方式获得函数的地址。
2.要把函数的地址存起来就要创建函数指针变量了
void test()
{
printf("hehe\n");
}
void (*pf1)() = &test;
void (*pf2)()= test;
int Add(int x, int y)
{
return x+y;
}
int(*pf3)(int, int) = Add;
int(*pf3)(int x, int y) = &Add;//x和y写上或者省略都是可以的
3.剖析函数指针变量
二、函数指针变量的使用
#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
int(*pf3)(int, int) = Add;
printf("%d\n", (*pf3)(2, 3));
printf("%d\n", pf3(3, 5));
return 0;
}
运行结果:
5
8