指针的重要应用场合
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针的重要应用场合相关的知识,希望对你有一定的参考价值。
指针的重要应用场合
指针概念
- 指针:通过地址能找到所需的变量单元,因此说,地址指向该变量单元,将地址形象化的称为指针;可理解为地址就是指针;
- 指针变量:存放指针(地址)的变量;
- 指针的作用:通过指针间接访问内存;
- 指针变量的定义:类型名 * 指针变量名
一个变量的指针的含义包含两个方面,一是存储单元的纯地址,二是指向存储单元的数据类型,故定义指针变量时要指定基类型,用来指定此指针变量可以指向的变量的类型;
注释:
*
取内容运算符,间接访问运算符 ,*p
代表指针变量p
所指向的对象;&
取地址运算符,&a
是变量a
的地址
根据场合的不同,它的意义也不同。
两种场合
- (场合一)在定义的时候,*号就代表一个标识符,表明该变量是一个指针变量
- (场合二)在定义之后,*号就代表指针所指向的变量。
如果把变量a的地址赋值给指针p,那么,指针p就指向变量a
表达式
*p++
指针地址发生改变。(指针加1,就表示指针会向下移动一个单位。)
k = *p++ //先把*p的值赋给变量之后p+1
(*p)++
自始至终指针的地址没有发生改变
k = (*p)++ //先把*p的值赋给变量之后*p+1
// <==>等价于
k = *p;
*p = *p+1
-
k = ++(*p)
先把*p
的值加1
,之后再把*p
的值赋值给变量k
-
k = *(++p)
先把指针p
加1
,之后,再把*p
的值赋值给变量k
-
举例:字母大小写转换代码
//*******字母大小写转换***********/
char *c = NULL;
void setup() {
c = "hello !world";
upper(c);
int num;
int*ptrNum;//定义一个int型指针
ptrNum = #
Serial.begin(115200);
Serial.println((long)&num);
Serial.println(c);
}
void loop() {
}
void upper(char*ptrC) {
while (*ptrC) {//遍历字符串
if (*ptrC < 97 || *ptrC > 122) {
//判断如果有ASCII码不在大写字母范围内就不进行*ptrC=*ptrC - 32操作
*ptrC++;//变量值++(指针指向的值++)
continue;//返回while循环,继续执行while里面的循环。
// break;//跳出while循环,后面的将不继续执行,将打印的结果是HELLO !world
}
*ptrC -= 32;//指针所指向的变量值-32
ptrC++;//这里是指针++,
}
}
以上是关于指针的重要应用场合的主要内容,如果未能解决你的问题,请参考以下文章