如何使用指针传递内存
一般使用指向指针的指针,或者用返回类型来传递。
指针:地址
变量的指针:变量的地址
指向变量的指针变量:存放变量地址的变量是指针变量,用来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”,例如,pointer代表指针变量,而* pointer是pointer所指向的变量。
指针变量的定义: 基类型
*指针变量名
数组的指针:是指数组的起始地址,数组元素的指针是数组元素的地址。
指向数组的指针变量
数组名代表数组的首地址。
指向指针的指针:
指向函数的指针:
1、定义形式: 数据类型 (*指针变量名)();
此处的数据类型指的是函数的返回类型。
2、函数的调用可以通过函数名调用,也可以通过函数指针调用。
3、(*P)()表示定义一个指向函数的指针变量,它不是固定指向哪一个函数的,而只是表示定义了这样一个类型的变量,它是专门用来存放函数的入口地址的。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个指针变量可以先后指向不同的函数。
4、在给函数指针变量赋值的时候,只需给出函数名而不必给出参数。如:p=max;因为是将函数入口地址赋给p,而不牵涉到实参与形参的结合问题。不能写成“p=max(a,b)”形式。
5、用函数指针变量调用函数时,只需将(*p)代替函数名即可,在(*p)之后的括弧中根据需要写上实参。
6、对指向函数的指针变量,像p+n、p++、p——等运算是无意义的。
const char* 和 char*const的区别:
const的位置不同,作用也不同。 以*前后为区别,const在* 之前,表示指向常量的指针,在*之后表示指针常量。
如:char ch[5]="lisj";
const char*pStr=ch;//或者可以写成 char const*pStr=ch;
此处为指向常量的指针,指向的对象是常量。指针值可以改变,但是指针指向内容不可改变。
*pStr='w'; //error
pStr="zhangsan";//ok
char ch[5]="lisj";
char*const pStr=ch;
此处为指针常量,指针值不可以修改,指向内容可以修改。
pStr="zhangsan";//error
*pStr='w'; //ok
指针常量必须在定义的同时赋值。指向常量的指针可以先定义完了再赋值。