標籤:空間名 取出 何事 北京 計算 操作 和我 變數 開發商
指標是一個值為記憶體位址的變數, 指標的核心是它是一個變數, 只不過它是用來存放記憶體位址的。在瞭解指標之前,先說一下什麼是變數。變數就是在記憶體中開闢的一個空間。如int year, 就是在記憶體中開闢了一個空間,空間名稱為year, 開闢空間做什麼呢?肯定是存放程式運行中所需要的東西,在電腦語言中,存放東西就是賦值。year= 2018, 給year賦值,就是在year這個空間存放一個整數2018; 開闢了空間,也存放了數值,那我們要使用這個空間中的東西怎麼辦?我們怎樣才能找到這個空間?當然,最簡單的辦法,是直接使用名稱year, 其實還有一種辦法,就是找到這個空間的地址,找到地址後,我們就可以做任何事情了。記憶體在開闢空間的時候,它自動就會有一個地址,這個地址就是記憶體位址,這和我們日常生活也是一樣的道理。比如開發商拿了一塊地,它就相當於開闢了空間。拿地的同時,也就是開闢空間的時候,它自動會有一個地址,他在廣東省拿的地,地址肯定是廣東省,而不是北京,並且地址也不會再發生變化。只不過地址描述方式不同,在現實生活中,它是廣東省深市圳,而在電腦中,它是一個十六進位的數字發, oXc522;
每一個變數都有地址,我們想要操作這個地址,就要把地址擷取到並儲存起來,儲存東西就是用 變數, 這個變數儲存記憶體位址,所以起了個名字就是指標。指標的變數的聲明也不一樣,用* 聲明。 int *point_year. 怎麼擷取變數地址用& &year 就取得了year記憶體位址, 那麼它就可賦值組point_year 變數。 point_year = &year, point_year 儲存的是year的記憶體位址,所以也可以稱之為point_year 指向了year. 在這裡有一個特數的常量,NULL, 表示為空白, 如point_year = NULL, 表示指標不指向任何地址。
當* 作為運算子的時候,叫做取地址所對應的值,所以它只能放在指標變數的前面, 取出地址所指向的值,那就是變數。*point_year 的值就是變數year. *point_year = 10; 其實就是對量year賦值。
指標變數也是變數,所以它也有地址,&point_year 就是取指標變數對應的地址。它是一個地址,所以還要聲明一個指標變數 int *ptr_ptr_year = &point_year. 那麼我們*運算子也是可以取地址*ptr_ptr_year返回的是point_year, 然而它也是一個指標變數,*point_year 才是指向的變數。**ptr_ptr_year 批向了year, **ptr_ptr_year = 10, 同樣是給它變數year賦值。
C 語言----- 指標