1、變數的儲存
(1)記憶體是一塊空間,把其中的每個位元組做了編號,為了以後計算機能通過編號找到資料
(2)編址方式:絕對編址(在整個程式中使用),相對編址(位元組相對於邏輯0偏移量,在程序中使用)
4、儲存位址—
指標:儲存變數的位址
指標的型別由將要儲存的位址的變數型別決定
int*只能儲存int變數的位址
指標賦值一定要是同型別的指標才能相互賦值!
5、指標的運算
(1)指標和指標之間的運算
「+」,「*」,「/」 指標與指標間是不能做這些運算,沒有意義!
「-」 可以做減法運算,以「sizeof(指標型別)」作為計算單位的! 注意:要同型別的指標才能做此運算,不同的話,會對運算單位產生歧義。
(2)指標和數字之間的運算(加、減都可以)
int i = 100;
int * p = &i;
列印 p+1 -> 相當於在位址上加4,因為儲存的變數是int型別的
p+2 -> 相當於在位址上加8
6、通過指標訪問所指向的變數
*p 代表指標p所指向的變數 *p <=> i
指標在宣告的時候,即初始化
int * p = null; 表示沒有明確指向,不能 *p ,會出現 「段錯誤」的異常 -->空指標
段錯誤原因(1)空指標
(2)陣列越界
(3)遞迴的條件不正確
7、課堂練習
用指標列印出陣列中個元素的值
#include
using namespace std;
int main();
int *p = &ai[0];
for(int i = 0 ; i < 6 ; i++);
person* p = &per;
cout << "per.id ="id 只有結構指標可以這樣使用
cout <<"********************=="id=" << p->id age=" << p->age 9、指標的位址
指標變數在記憶體中佔4個位元組(與型別無關,因為儲存位址的指標只儲存位址)
儲存int型指標(int* p = &i)的位址用int**儲存(int** pp = &p)
#include
using namespace std;
int main(){
int i = 0 ;
int * p = &i ;
int ** pp = & p ;
cout<<"&i = " << &i << endl;
cout<<"p = " << p << endl;
cout<<"&p = " << &p << endl;
cout<<"pp = " << pp << endl;
cout<<"&pp = " << &pp << endl;
cout<<"i = " cout<<"*pp = " << *pp << endl;
cout<<"**pp = "<< **pp << endl;
return 0 ;
執行結果:
&i = 0xffbffbec
p = 0xffbffbec
&p = 0xffbfbe8
pp = 0xffbfbe8
&pp = 0xffbffbe4
i = 0
*p = 0
*pp = 0xffbffbec
**pp = 0
pp -> p -> i 指向關係
pp=&p p=&i
*pp=p *p=i **pp=*p=i
Python學習筆記day05
高階函式 課後練習 不可變的資料型別一定可雜湊 hash 內建函式可以判斷某個型別是否可雜湊 s1 s2 s3 s4 print s1,s2,s3的交集 s1.intersection s2,s3 print s1,s2,s3的交集 s1 s2 s3 print s1,s2,s3的並集 s1.uni...
c 自學筆記 day05
cin.getline char int 如果鍵盤輸入的字元個數大於函式的第二個引數,剩餘的字元會留在快取區中,在這種情況下cin,getline cahr int 會設定失效位,程式後續的讀取快取區動作將被關閉。可以通過cin.clear 函式來恢復。string型別 在c 中,把字串認為是一種型...
java學習筆記day05 陣列
陣列 是一種容器,可以同時存放多個資料值。陣列的特點 1.陣列是一種引用資料型別 2.陣列當中的多個資料,型別必須統一 3.陣列的長度在程式執行期間不可改變 陣列的初始化 在記憶體當中常見乙個陣列,並且象其中賦予一些預設值。兩種常見的初始化方式 1.動態初始化 指定長度 2.靜態初始化 指定內容 動...