go語言編程之指針

package main

import "fmt"

func main() {
   /**
   1.特點:(最大特點)不能運算,不同於c語言
     在go語言中如果對指針進行運算會報錯:
   nvalid operation:p++(non-numeric type *int)

   2. 聲明指針,*T是指針變量的類型,它指向T類型的值。。
   var 指針變量名 *指針類型
   var ip * int //指向整型的指針
   var fp * float32//指向浮點型的指針

   2、 如何使用指針:
        定義指針變量;
        爲指針變量賦值;
        訪問指針變量中指向地址的值
        獲取指針的值:在指針類型的變量前加上 *號(前綴)來獲取指針所指向的內容。
        獲取一個指針意味着訪問指針指向的變量的值。語法是:*a
   特別注意:當 * 後面跟數據類型,代表的是指針指向的數據的類型;
             如 * int 代表指向整型的指針
             當 * 後面跟的是個變量,則意味着訪問指針指向的變量的值。語法是 *a
    */

    i := 124
    var ip  *int
    ip = &i
    fmt.Printf("%T  \t %v \n",i , i)  //int 124 正確
    fmt.Printf("%T  \t %v \n", ip , ip)// *int 地址  正確
    fmt.Printf("%T \t %v \n", &i , &i)//int  124  答案:*int      0xc042050080
    fmt.Printf("%T \t %v \n",&ip ,&ip)//124  124  答案:**int     0xc042070018
    //最後注意這種寫法
   fmt.Printf("%T \t %v \n",*&i ,*&i)//*int  124  正確  &i 其實就是ip
    fmt.Printf("%T \t %v \n", *(&ip) , *(&ip))//*int  地址
    //結論:總而言之:  *變量   一定指向值 ,&變量 一定指向地址。
    
    



}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章