美文网首页
&运算符 与 *运算符

&运算符 与 *运算符

作者: JohnnyB0Y | 来源:发表于2016-12-25 20:02 被阅读16次

& 运算符用作获取变量的地址。
* 运算符通过变量的地址取值、赋值。

1.基本用法:

  void ensample1()
  {
    int *pointer;
    int variable;
    
    // 把 33 赋给 variable 变量。
    variable = 33;
    
    // 把 variable 变量在栈上的内存地址赋给 pointer 指针变量。
    pointer = &variable;
    
    // 往 pointer 指针变量所指的内存中写入 22。
    //( 此时 variable 的值也为 22 )
    *pointer = 22;
    
    // 把 22 当地址赋给 pointer 指针变量。
    pointer = 22;

  }

2.指向指针的指针:

void changeCharacter( char *character, char *t_character, char **l_character )
{
    unsigned long strLen = strlen( character );
    
    char topperTemp[ strLen ], lowerTemp[ strLen ];
    
    for( int i = 0; i < strLen; i++ )
    {
        // 转大写
        topperTemp[i] = _toupper(character[i]);
        
        // 转小写
        lowerTemp[i] = _tolower(character[i]);
        
    }
    printf( "topperTemp: %s lowerTemp: %s \n", topperTemp, lowerTemp );
    
    t_character = topperTemp;
    *l_character = lowerTemp;
}

void ensample2()
{
    char name[] = "Kobe-Byant";
    char *toupper = NULL, *lower = NULL;
    
    // 大小写转换
    changeCharacter( name, toupper, &lower );
    
    // 打印转换后的结果
    printf( "toupper: %s lower: %s \n", toupper, lower );
    
    /**
     最终打印结果:
     topperTemp: KOBE-BYANT lowerTemp: kobe-byant
        toupper: (null)         lower: kobe-byant
     
     分析:
     toupper 变量没有值是因为,toupper 一开始指向 NULL。
     函数 changeCharacter() 用一个临时变量 t_character 接收 toupper 指向 NULL 的地址。
     当 t_character 重新指向 topperTemp 时,对外部变量 toupper 没有影响。
     
     而 lower 变量有值是因为,lower 一开始指向 NULL。
     函数 changeCharacter() 用一个临时变量 l_character 接收 lower 变量在栈上的地址。
     *l_character = lowerTemp; 这句就是取出 l_character 变量存放的 lower 指针,
     然后根据 lower 指针找到 lower 变量,并把 lowerTemp 的地址 赋给 lower。
     
     */
}

相关文章

网友评论

      本文标题:&运算符 与 *运算符

      本文链接:https://www.haomeiwen.com/subject/esprvttx.html