c語言初學指針,對於java面向對象的初理解

最近在看關於c語言的指針,學習下,發現指針原來運用理解成其實能夠抽象出咱們java的面向對象封裝,地址--> 對象或變量,先看一段代碼:java

public class Cat {
    public String name;
    
}函數

public class CatTest {
    public static void main(String[] args) {
        Cat cat = new Cat(); //new了一個對象,至關於對象便是指針指向了一個地址
        cat.name = "cat david";
        System.out.println("cat.name = " + cat.name);
        int i= 100;
        System.out.println("i = " + i);學習

      //i的值不會變化,是由於 i傳入的是數值,而change(i),只是新開拓了一個空間地址i指針

//並賦值給了新創的i變量,因此值沒有發生變化
        change(i);
        System.out.println("i = " + i);
        change(cat);
        //cat是一個對象,指向的是一個地址門牌,而change(cat)是找到cat的地址,修改了cat地址門牌下對應的name指向地址(便是指針)的數據內容。
        System.out.println("cat.name = " + cat.name);
    
    }
    
    public static void change(int i){
        i = 200;
    }
    
    public static void change(Cat cat){
        cat.name = "cat jack";
    }
}對象

輸出以下:內存

===========================class

cat.name = cat david
i = 100
i = 100
cat.name = cat jack變量

===============================數據

再來看c的內容static

//變量名,對內存空間上的一段數據的抽象
void main(){
   int i = 90;
    i = 89;
   printf("i的值爲:%d\n",i);
   int* p = &i;
//*給p上存儲的地址賦值 這種方式叫間接賦值
//指針最最重要的用法,正是有了它,纔有了java的面向對象。
  // *p = 200;

   change(i)
   printf("i的值爲:%d\n",i);

   change(p)
   printf("i的值爲:%d\n",i);
   system("pause");
}

輸出:

i的值爲:89

i的值爲:89

i的值爲:300

//局部變量 不改變main函數裏面的值
void change(int i){//這兒至關於局部變量開創了一個新的內存空間
   i = 300;
}

void change(int* p){   *p = 400;//p是i變量的地址,這一行*p至關於給指定地址改了地址裏面的內容。 }

相關文章
相關標籤/搜索