电子说
指针是C语言的一个特殊的变量,它存储的数值被解释成为内存的一个地址。
指针定义的一般形式如下。
数据类型 *指针变量名;
例如:
int i,j,k,*i_ptr; //定义整型变量i,j,k和整型指针变量i_ptr。
指针运算包括以下两种:
(1)取地址运算符。取地址运算符&是单目运算符,其功能是取变量的地址,例如:
i_ptr=&i; //变量i的地址送给指针变量i_ptr
(2)取内容运算符。取内容运算符“*”是单目运算符,用来表示指针变量所指单元的内容,在星号“*”运算符之后跟的必须是指针变量。例如:
j=*i_ptr; //将i_ptr所指的单元的内容赋给变量j
可以把数组的首地址赋予指向数组的指针变量。例如:
int a[5],*ap;
ap=a; //数组名表示数组的首地址,故可赋予指向数组的指针变量
也可以写成:
ap=&a[0]; //数组第一个元素的地址也是整个数组的首地址,也可赋予指针变量ap
还可以采用初始化赋值的方法:
int a[5],*ap=a;
也可以把字符串的首地址赋予指向字符类型的指针变量。例如:
unsigned char *cp;
cp="Hello World!";
这里应该说明的是,并不是把整个字符串装入指针变量,而是把存放该字符串的字符数组的首地址装入指针变量。
对于指向数组的指针变量,可以进行加减运算,例如:
cp--; //cp指向上一个数组元素
ap++; //ap指向下一个数组元素
例如:定义了指针类型的形式参数如下:
uchar *str;
该形式参数表示一个无符号字符型变量的地址。可以采用以下赋值语句:
SBUF=*(str+k); //将单元地址为str+k的内容赋给专用寄存器SBUF,启动发送
在调用该函数时,直接把数组trdata[]的数组名作为实际参数代入即可,因为数组名表示数组的首地址,故可直接赋予指向数组的指针变量。
全部0条评论
快来发表一下你的评论吧 !