日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arrayPointer

發布時間:2023/12/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arrayPointer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,分別使用指針加減

  int wages[2] = {100000000,20000000};

  int *pw = wages or int *pw = &wages[0] 表示指針指向數組的首地址;

  pw表示地址,*pw表示取值,new分配的動態數組時 指針名稱當數組名稱使用eg pw[0],pw[2]分別表示指向數組wages的2個數組的元素值;

  我們已知pw表示此指針所指向的數組的首地址元素在內存中的地址,pw + 1則表示指針的指向從指向數組的首地址轉義到數組的第二個元素;

  此時經過pw = pw + 1后 pw表示的就是此指針所指向數組的第二個地址了,*pw取到的值就是數組的第二個值了;

  在常規變量指針變量場合中取數組的值可以用數組名下標,也可以使用*指針名來取值;

  但是在new動態數組中只能通過指針名

  pw[0] or pw[1];

  同時在常規變量中數組位置也是可以的*wages;

數組名解析為數組的首地址

指針默認都是指向數組的首地址,可以定義指針指向數組的位置

eg int *pw = &wages[1] or &wages[2];

wages = &wages[0] //first address elements;

注,將指針變量+ 1后,其增加的值等于指向的類型占用的字節數;

wages[0] Pk *wages;

wages[1] Pk *(wages + 1);arrayName[i] becomes *(arrayName + i);

pointerName[i] becomes *(pointerName + i)

數組名,指針名 都可以表示數組地址,但指針名值可改變,數組名值及所代表的地址值不可變更,--數組名? 常量;

pointerName = pointerName + 1執行下一個數組的元素內存地址;

arrayName = arrayName + 1; //not allow;

->用于指針結構體中;

pw 指針變量? 加減,移動指針所指的數組元素位置;

數組名通常被解析為數組的首地址,但請注意,當對數組名應用地址運算符時,得到的是整個數組的地址

但是又請注意了,數組名 = 數組的首地址 = 整個數組的地址;

但又請您注意了,tell &tell內存地址值一樣,但在內存中所占存儲空間是不一樣的

變量類型(類型占內存字節大小)

這個你應該懂的!移動整個 數據塊單元;

處理new數組,把指針當數組名對待;

double * pn; pn是指針,double *是指向pn的指針;

指針存儲的內存的地址,對變量名應用&運算符,來獲得被命名的內存的地址,new運算符返回未命名的內存的地址;

double * pn // pn can point to a double value
double * pa; //so can
char * pc; //pc can point to a char value
double bubble = 3.2;
pn = &bubble;//assign address of bubble to pn
pc = new char; //assign address of newly allocated char memory to
pa = new double[30] //

指針解除引用

對指針解除引用 意味著獲取指針指向的值(*pw),對指針應用解除引用或間接值運算符(*)來解除引用;

指針解除引用的另一種方法就是使用數組表示法 pn[0] *pn

絕不要對未被初始化為適當地址的指針解除引用;

指針算術(pw = pw + 1,值移動單位長度的指針指向跨度,此跨度是指指針所指向的數據類型所占內存的字節數)

指針和整數相加減

原來的地址值加上指向的對象占用的總字節數 但2個指針指向同一個數組時,指針間也是可以加減的;

int tacos[10] = {5,2,8,4,1,2,2,4,6,8};
int * pt = tacos; //suppose pt and taos are the address 3000
pt = pt + 1;
int * pe = &tacos[9]; // pe os
pe = pe - 1;
int diff = pe - pt;

數組的動態聯編(dynatic build)和靜態聯編(static build)
使用數組申明來創建數組,將采用靜態聯編,數組 的長度編譯是設置
new[]運算符創建數組,采用動態聯編,即程序運行時為數組分配存儲空間,設定元素個數;
但當使用完 new[]申明生成的數組后,需用delete [] typeName刪除,不然造成內存泄露
(指操作過后不經過特定手法無法恢復);

int size;
cin>>size;
const int size = 10;

int * pz = new int [size]; //dynamic binding,size set at run time
delete [] pz; //free memory when finshed;
數組表示法和指針表示法
方括號數組表示法等同于對指針解除引用;
tacos[0] means *tacos the value at address tacos
tacos[3] means *(tacos + 3)? 等價于 tacoks = tacos + 3; //means the value at address tacos + 3
int * pt = new int [10];//pt points to block of 10 ints
*pt = 5; //set element number 0 to 5
pt[0] = 6;//reset element number 0 to 6
pt[9] = 44; //set tenth element (element number 9) to 44

int coats[10];
*(coats + 4) = 12; //set coats[4] to 12 相當于設置數組的第四個元素值
*ArrayName;
*PointerName;
*(ArrayName + n) 移動到相應的元素處;

數組初始化 整數 or 字符串
可以{} or ""但是僅僅用于字符串
{} 僅僅只可以用到數字上

數據類型 ,變量 占內字節數

strlen 字符串變量的長度

strlen(pw);

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的arrayPointer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。