C++数组与指针回顾总结
生活随笔
收集整理的這篇文章主要介紹了
C++数组与指针回顾总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++數組與指針回顧總結
1 //數組名是常量指針, 2 //a指向數組首元素,指針步長為數組元素大小,&a同樣也指向數組首地址,指針步長為數組大小,如下: 4 //a+1 是相對數組起始地址偏移了sizeof(int)字節 5 //&a+1 是相對于數組起始地址偏移了sizeof(a)字節 6 int a[] = { 1, 3, 2, 4 }; 7 cout << *a << *(a + 1) << *(a + 2) << *(a + 3) << endl; //1324 8 9 10 cout << a << " " << &a << endl; //兩地址相同 11 cout << &a + 1 << "," << &a + 2 << endl; //0048FBB8,0048FBC8,剛好差了16字節 12 13 auto ta = a; //這個方式有趣,只能用這種方式原樣使用數組 14 cout << ta[0] << ta[1] << ta[2] << ta[3] << endl; //1324 15 16 //向上取址,正確方式 17 int b = 10; 18 int* p = &b; 19 int** pp = &p; // 20 int*** ppp = &pp; 21 int**** pppp = &ppp; 22 23 //向上取址,錯誤方式 24 int** ppt = &(&b); //&b是常量地址,&(&b)是對常量取址,錯誤行為,只有變量能取址 25 26 27 //定義一個指向 int[4]類型的指針pa,注意,數組元素個數必須相等,不能是 int(*pa)[2] = &a; 28 int(*pa)[4] = &a; 29 30 //同理,可以先定義一個int (*)[4]類型,再用它定義變量 31 typedef int(*Arr4Ptr)[4]; //聲明類型 32 Arr4Ptr px = &a; //定義變量 33 34 //數組內存是連續的嗎? 35 //答案:數組的一級元素在內存中都是連續存放的,示例如下: 36 37 int iarr1[6]; //內存連續 38 int iarr2[6]; //內存連續 39 int iarr3[6]; //內存連續 40 float farr[3]; //內存連續 41 42 int* arrptrs[3]; 43 44 arrptrs[0] = iarr1;; 45 arrptrs[1] = iarr2; 46 arrptrs[2] = iarr3; 47 48 //一級元素共3個,每個都是類型為 int*的指針,它們在內存中是連續存放的: 49 //002CF994,002CF998,002CF99C 50 cout << &(arrptrs[0]) << "," << &(arrptrs[1]) << "," << &(arrptrs[2]) << endl; 51 52 //二級元素iarr1,iarr2, iarr3明顯是不連續存放的,因為它們是三個不相關的普通變量 53 cout << iarr1 << "," << iarr2 << "," << iarr3 << endl;參考:https://www.cnblogs.com/nosadness/p/4369937.html
posted on 2018-02-12 12:25 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的C++数组与指针回顾总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】VS 安全开发生命周期(SDL)检
- 下一篇: C++风格与C风格文件读写效率测试-vs