• 指针知识(二):指针初始化


    当声明一个指针的时候我们可能需要同时指定它们指向哪个变量,如:

    int number;
    int *tommy = &number;

    这相当于:

    int number;
    int *tommy;
    tommy = &number;

    当给一个指针赋值的时候,我们总是赋给它一个地址值,而不是它所指向数据的值。你必须考虑到在声明一个指针的时候,

    星号 (*) 只是用来指明它是指针,而从不表示间接引用操作符dereference operator (*)。

    记住,它们是两种不同操作,虽然它们写成同样的符号。因此,我们要注意不要将以上的代码与下面的代码混淆:

    int number;
    int *tommy;
    *tommy = &number;

    上面这一种是错的。

    在定义数组指针的时候,编译器允许我们在声明变量指针的同时对数组进行初始化,初始化的内容需要是常量,例如:

    char * terry = "hello";

    这个例子中,内存中预留了存储"hello" 的空间,并且terry被赋予了指向这个内存块的第一个字符(对应’h’)的指针。

    假设"hello"存储在地址1702,下图显示了上面的定义在内存中状态:

    这里需要强调,terry 存储的是数值1702 ,而不是'h' 或 "hello",虽然1702 指向这些字符。

    指针terry 指向一个字符串,可以被当作数组一样使用(数组只是一个常量指针)。例如,如果我们的心情变了,而想把terry指向的内容中的字符'o' 变为符号'!' ,我们可以用以下两种方式的任何一种来实现:

    terry[4] = '!';
    *(terry+4) = '!';

    记住写 terry[4] 与*(terry+4)是一样的,虽然第一种表达方式更常用一些。以上两个表达式都会实现以下改变:

  • 相关阅读:
    排序算法(二)插入排序---直接插入排序
    Shazam 是如何听音辨曲的?
    Android 读取<meta-data>元素的数据
    Android <uses-featureandroid:name="string">详解
    Android AsyncTask的用法
    Android ViewPager使用详解
    Git 使用教程(4)—— Git 常用命令集合
    Git 使用教程(3)
    Git 使用教程(2)
    Git 使用教程
  • 原文地址:https://www.cnblogs.com/guozqzzu/p/3592643.html
Copyright © 2020-2023  润新知