力争最简单把*、&说清楚

    技术2022-05-11  141

    力争最简单把*、&说清楚。这两个符号有许多迷惑的地方。先说 *1.定义指针用。int i=6;int * p; 定义指针p = &i;   此处&是取地址,下面有说

    2.取值用。int i=6,j;int * p;  定义指针p = &i;   此处&是取地址,下面有说j = * p; 取值

    3.乘法用。int a=5,b=6,c;c = a * b; hehe~,这一点谁都不会混。

    再说 &1.定义引用用。int i=6;int &m=i; 定义引用

    2.取地址用。int i=6;int * p;  定义指针p = &i;  即为取地址

    3.按位与 和上面情况一样,不会混淆,别不多说。:)

    定义指针、取值、定义引用、取地址,这些易混淆,看下面例子。

    void Test(){ int i=6,j; int &m=i; 定义引用 int * p1=NULL,* p2=NULL; 定义两个指针

     p1 = &i; 取地址 p2 = &m; 取地址(取i的引用m的地址)  j = * p1; 取值 j = * p2; 取值 m++; j = i;  i也增加了}单步可看到更多信息: i = 6; &i = 0x0086d7d0 m = 6; &m = 0x0086d7d0 m和i的地址一样,所以里面的值也绝对是一样的。m是i引用(可以这么说,m就是i),对m的操作就是对i的操作,同样对i的操作也就是对m的操作。引用就是别名。m就是i,i就是m。再举个例子,张三,在公司都喊她小张,今天员工甲给小张300RMB,员工乙给小张500RMB,现在问供给了张三多少RMB? 800。:)张三就是小张,小张就是张三。

     p1 = 0x00867d0; * p1 = 6; &p1 = 0x0065fdec; p2 = 0x00867d0; * p2 = 6; &p2 = 0x0065fde8; p1、p2两个指针,内容一样都是0x00867d0。她们两个指向同一个地址,所以有 * p1 等于 *p2 都是6。但她们两个所在的地方不一样,所以&p1和&p2不一样。

    以上只是C++里面有关的且只是一部分。和C++类有关的,正在整理,尔后也贴出来。先权当抛砖引玉。呵呵~


    最新回复(0)