指针的重要应用场合

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) 先把指针p1,之后,再把*p的值赋值给变量k

  • 举例:字母大小写转换代码

//*******字母大小写转换***********/
char *c = NULL;

void setup() {

  c = "hello !world";
  upper(c);
  int num;
  int*ptrNum;//定义一个int型指针
  ptrNum = &num;
  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++;//这里是指针++,
    }
}

以上是关于指针的重要应用场合的主要内容,如果未能解决你的问题,请参考以下文章

C|指针的10种经典应用场合

片段中的 EditText 上的空指针异常 [重复]

编写高质量代码改善C#程序的157个建议——建议103:区分组合和继承的应用场合

Spring AOP构成Spring框架的重要基石

Android 应用程序不断因空指针异常而崩溃

空指针异常 - 片段活动