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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#---------------------------------指針-----------------------------------#

#include <iostream>

int main()
{
using namespace std;


/* 指針引入 */
int updates = 6; //聲明一個變量
int* p_updates; //聲明一個指針p_updates,該指針指向一個地址
p_updates=&updates; //將updates的地址賦給p_updates

cout<<"Address:updates= "<<&updates<<endl; //顯示變量updates的地址
cout<<"Address:p_updates= "<<p_updates<<endl; //由于p_updates本身就是地址,所以此處不用再加地址符& 以上兩行顯示同一個地址

*p_updates=*p_updates+1; //指針(地址)p_updates所指向的值加1,*p_updates和updates是完全等價的.所以這一句將會修改指針p_updates指向的值updates
cout<<"Now updates= "<<updates<<endl; //此時updates的值為7
//int型變量updates和指針變量p_uodates只不過是同一枚硬幣的兩面,變量updates表示值,并使用&來獲取地址;而變量p_updates表示地址,并使用*來獲取值
//可以將值賦給*p_updates,這樣做將會修改指向的值,即updates


/* 指針聲明時的注意 */
int *p1; //可以這樣聲明
int* p2; //這樣也可以,int*是一種復合類型強調的是指向int的指針,在哪里添加空格對編譯器沒有任何區別
int* p3,p4; //聲明指針變量p1和int型變量p2

int higgens=5;
int* pt5 = &higgens; //在聲明中初始化指針


/* new分配內存 */
int* pt6; //聲明一個指針pt6
//pt6 = 0xB8000000; //在自己的理解中會認為0xB8000000是一個偏移地址,但是編譯器卻會認為這是一串數字,所以將數字賦給指針(地址)會報錯

//報錯解決方法一:使用強制轉換
pt6 = (int*)0xB8000000; //有效,使用int*進行強制轉換,將0xB8000000強制轉換為地址

//報錯解決方法二:使用new關鍵字去給指針分配內存地址
int* pt7 = new int; //new關鍵字的作用是在程序運行時,尋找一塊適合存儲int的內存,并返回一個地址賦給pt7*****
*pt7 = 1001; //有效,這樣就可以直接給*pt7直接賦數字值*****


/* 使用delete來釋放new分配的內存 所以new和delete必須是成對出現的 */
double* ps = new double;
*ps = 6;
delete ps; //釋放ps所指向的內存,但不會刪除指針,且只可釋放一次

int jugs=6; //有效,聲明一個int型變量jugs并賦初值
int* pq=&jugs; //有效,將jugs的地址賦給指針pq
//delete pq; //無效,delete是來釋放new分配的內存的


/* 使用new來創建動態數組 */
//靜態聯編:數組在編譯時加入到程序中,在編寫程序時候指定數組長度
//動態聯編:在程序運行階段,如果需要數組,則創建它;如果不需要則不創建;還可以在程序運行時選擇數組長度。這種數組被稱為動態數組

int* psome=new int [10]; //創建一個包含十個元素的動態數組,new返回數組第一個元素的地址并賦給psome
delete [] psome; //當程序使用new分配內存時,應使用delete來釋放內存,[]告訴程序應釋放整個數組
//當使用new時帶[],那么在使用delete時候也應使用[]
//當使用new時不帶[],那么在使用delete時候也應不使用[]


/* 使用動態數組 */
int* psome2=new int [10]; //創建包含十個元素的動態數組,psome2指向第一個元素的地址
cout<<psome[0]<<endl; //輸出動態數組的第一個元素
cout<<psome[1]<<endl; //輸出動態數組的第二個元素
cout<<psome[2]<<endl; //輸出動態數組的第三個元素

double* pw = new double [3]; //創建包含三個元素的動態數組
pw[0]=0.12;
pw[1]=0.22;
pw[3]=0.32;
cout<<"pw[1] is "<<pw[1]<<endl; //輸出pw[1] is 0.22
pw = pw+1; //在未執行該句之前,pw指向第一個元素的地址,執行此句后pw將指向下一個元素的地址;此時pw不再執行數組第一個元素的地址,而是指向數組第二個元素的地址
cout<<"pw[0] is "<<pw[0]<<endl; //輸出pw[1] is 0.22
cout<<"pw[1] is "<<pw[1]<<endl; //輸出pw[1] is 0.32
pw=pw-1; //恢復原來的值
delete [] pw; //釋放pw所指向的內存

//由于直接定義的數組中數組名只是一個名字,不可以進行加減運算,但是指針是變量,就可以修改它的值
//比如下面的語句是錯誤的
//int sw[10]; //有效 定義一個數組
//sw=sw+1; //無效
}

?

最后編輯于 2019.02.17 18:33 haijing in hz miss my family

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/YiYA-blog/p/10458513.html

總結

以上是生活随笔為你收集整理的研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...的全部內容,希望文章能夠幫你解決所遇到的問題。

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