1//陣列名是常量指標,2//
4//a+1 是相對陣列起始位址偏移了sizeof(int)位元組5//
&a+1 是相對於陣列起始位址偏移了sizeof(a)位元組
6int a = ;
7 cout << *a << *(a + 1) << *(a + 2) << *(a + 3) << endl; //
132489
10 cout << a << "
"<< &a << endl; //
兩位址相同
11 cout << &a + 1
<< ","
<< &a + 2
<< endl; //
0048fbb8,0048fbc8,剛好差了16位元組
1213 auto ta = a; //
這個方式有趣,只能用這種方式原樣使用陣列
14 cout << ta[0] << ta[1] << ta[2] << ta[3] << endl; //
1324
1516
//向上取址,正確方式
17int b = 10;18
int* p = &b;
19int** pp = &p; //
20int*** ppp = &pp;
21int**** pppp = &ppp;
2223
//向上取址,錯誤方式
24int** ppt = &(&b);
//&b是常量位址,&(&b)是對常量取址,錯誤行為,只有變數能取址
2526
27//
定義乙個指向 int[4]型別的指標pa,注意,陣列元素個數必須相等,不能是 int(*pa)[2] = &a;
28int(*pa)[4] = &a;
2930
//同理,可以先定義乙個int (*)[4]型別,再用它定義變數
31 typedef int(*arr4ptr)[4]; //
宣告型別
32 arr4ptr px = &a; //
定義變數
3334
//陣列記憶體是連續的嗎?
35//
答案:陣列的一級元素在記憶體中都是連續存放的,示例如下:
3637
int iarr1[6]; //
記憶體連續
38int iarr2[6]; //
記憶體連續
39int iarr3[6]; //
記憶體連續
40float farr[3]; //
記憶體連續
4142
int* arrptrs[3
];43
44 arrptrs[0] =iarr1;;
45 arrptrs[1] =iarr2;
46 arrptrs[2] =iarr3;
4748
//一級元素共3個,每個都是型別為 int*的指標,它們在記憶體中是連續存放的:
49//
002cf994,002cf998,002cf99c
50 cout << &(arrptrs[0]) << ","
<< &(arrptrs[1]) << ","
<< &(arrptrs[2]) <5152
//二級元素iarr1,iarr2, iarr3明顯是不連續存放的,因為它們是三個不相關的普通變數
53 cout << iarr1 << ","
<< iarr2 << ","
<< iarr3 << endl;
參考:
posted on 2018-02-12 12:25收藏
個人回顧總結
答 我們的軟體要解決如何讓同學們在愉悅歡快的遊戲中收穫知識,如何把學習變成一件相對不枯燥的事情,我們利用充足的時間做了計畫,並同夏大偉老師進行商討解決了對於需求的滿足。答 有,相對來說時間相對充裕,但是由於我們要做的是遊戲,乙個全新的東西嗎,所以制定計畫有一些費力。答 我們小組意見都會說出來,如果不...
專案回顧 總結
一 團隊中每個人針對專案回顧模板中的問題,用markdown語法寫下自己的思考和回答並發布到自己的 我們的軟體要解決什麼問題?是否定義得很清楚?是否對典型使用者和典型場景有清晰的描述?我們的軟體主要解決藥品庫存量的管理,我們定義清楚,我們軟體面對的使用者是醫生和藥品庫存管理人員,面對的場景是醫院 是...
專案回顧 總結
設想和目標 1.我們的軟體要解決什麼問題?是否定義得很清楚?是否對典型使用者和典型場景有清晰的描述?一些小的功能細節 清楚 有。2.是否有充足的時間來做計畫?有。3.團隊在計畫階段是如何解決同事們對於計畫的不同意見的?投票,用人數多的計畫。使用者量,使用者對重要功能的接受程度和我們事先的預想一致麼?...