C 學習筆記 day05

2021-06-23 07:11:11 字數 1822 閱讀 5919

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.靜態初始化 指定內容 動...