简介:
指针变量在使用前,必须指向具体的有效的内存单元
指针变量在使用前不但要定义还要初始化
四个方面:指针的类型,指针指向的类型,指针的值或者指针所指向的内存区,指针本身所占的内存区
int *ptr;//指针的类型是 int* ;指针指向的类型是 int ;32位长,指针指向了首地址;sizeof
&地址运算符 *取值运算符
int a =12;int b ;int *p ; int **ptr; p = &a; //&a结果是一个指针,类型是int*;指向的类型是int,指向的地址是a的地址; *p =12; ptr = &p; *ptr =&b; //*ptr是个指针,&b的结果也是个指针 **ptr =24; //*ptr的结果是ptr所指向的东西,在这里是一个指针,对这个指针在做一次*运算,结果是个int类型的变量
指针的算术运算
char a[20]; int *ptr=(int *)a; // 注意数组a为char,指针指向的类型是int ptr++;
数组指针与指针数组
假设一个数组str[5],str[0]是数组的第一个元素,数组名str就是数组元素str [0]的地址,所以str与&str[0]指向同一内存单元
字符串处理有两种方式,一种是数组形式,一种是指针形式,数组名代表存放在数组空间的首地址
函数指针与指针函数
要在被调用函数中改变主调函数的变量值,就得把主调函数中的变量的指针作为实参,传递给被调函数,仅仅传递变量值是没有作用的。
函数指针: 数据类型 (*变量名)();
用来指向某个函数,但是具体指向那个函数要看使用前函数指针指向那个函数
void (*p_output)(); p_output=output; (*p_output)(); //通过指针变量调用函数 return 0;
指针函数: 数据类型 *变量名();
返回值是指针的函数,()的优先级比*大,所以变量名先与()结合再与*结合
函数指针就是函数的地址;指针函数就是返回值为指针的函数