1.格式:指针类型 *指针变量
注意:1.指针变量本身的数据类型是unsigned long int(4字节);指针类型是指向的变量的类型
2.*是指针指示符,不是运算符
例子:int *pi; float *pf;
int指pi指向的数据是int型;float指pf指向的数据是float型;但是pi和pf都是unsigned long int类型
对指针应用的例子:
inta =10;
int*p = &a;
printf("%i\n",*p);
a =11;
printf("%i\n",*p);
输出:10
11
2.指针的运算:
指针的加减:指针加上或减去一个整数n代表指针从当前位置前或后移动sizeof(数据类型)长度的存储单元
例子:
inta =10;
int*p = &a;
printf("%p\n",p+1);
输出:0x7fff5fbff6cc
0x7fff5fbff6d0
同理两个指针相减代表两个指针减有多少个数据
3.二级指针
代表指向指针的指针;
int*p = &a;
int**pp = &p;
int*** ppp = &pp;
p = 0x7fff5fbff6cc; pp = 0x7fff5fbff6c0; ppp=0x7fff5fbff6b8
*pp = p; *ppp=pp;
4.指针和函数
指针函数:int* f(x,y); 返回值是个指针是int *类型
函数指针:void(*fptr)();指针是指向函数的指针变量
使用:
void func(){ //注意 可以使用func()或者(*func)();调用
std::cout << "Hello, World!\n";
}
int main(int argc,const char* argv[]) {
void (*fptr)(); //fptr的格式是:void(*)()类型
fptr = &func;
//调用方式
(*fptr)(); //或者fptr()
/*oc转换成c++代码使用函数指针的方式是
void* fptr = (void*)func;
((void(*)())fptr)();
*/
return 0;
}