1樓:匿名使用者
delete array;
array=0;
正如你所理解array=0; 這一句不是必須的,就是說當你呼叫了delete 之後, array所佔用記憶體已經被釋放;那麼為什麼還要加上一句array=0呢?
這是因為, delete array; 只是將array所分配記憶體釋放掉, 而並不置array為0, 而是置array一個隨機的值,即所謂的野指標. 如果在程式中 你能保證執行完delete 之後不再引用array( 比如在解構函式中), 那麼array=0就沒有什麼必要了。
如果在其它函式中執行的delete array, 那麼這個時候執行array=0; 就很有必要了。正如前所述,delete之後, array 是一個不可預知的值,即有可能指向一塊其它記憶體(可能是系統非常重要的記憶體塊),這樣如果你在程式中再次引用array ,不僅自己程式本身崩潰, 而且對系統本身也可能受影響。如果你新增了語句:
array=0; 雖然程式本身會異常退出(因為array是空指標了), 卻不會對系統本身影響。
基於以上兩點,在delete一個物件之後, 良好的習慣是加上: array=0
希望這樣的解釋能夠幫到你!
2樓:
array=0;等同於array=null;
這麼做的目的在於將空指標清0,防止懸掛的野指標存在
比如你new了一個指標,系統分配給該指標地址為0xffff,那麼你delete了以後,該空間已經被系統**,但是指標仍然指向0xffff這個地方,所以為安全起見,將其賦值為null,是一個好的程式設計師的必要措施
3樓:
array=0實際上是將array所對應的指標賦值成null。delete是將array所對應的空間釋放,但是這個指標仍然存在
4樓:匿名使用者
delete array,這樣寫,array肯定是個指標,指向一個陣列型別。
array=0的意思和array=null一樣,表示array現在是個空指標了。
js裡面刪除陣列元素的問題
5樓:大雁一向北飛
首先陣列建立和初始化的格式不對
因為js是弱語言,對格式要求不是很高,所以對於賦值時"new array"可以省略,直接用
var arrayobj =[[element0[, element1[, ...[, elementn]]]])]
例如var arrayobj =[1,2,3];var arrayobj =["hello","你","好"];
按你目前的格式如果放的是數字,var arr="1,2,3";這時arr裡其實放了五個元素,逗號也算進去了,所以如果格式錯了,js雖然不會報錯,但這是以不是你想要的結果,正確的應該賦值應該是
var arrayobj =[1,2,3]或者var arrayobj =new array(1,2,3);或者var arrayobj =new array();
arrayobj[0]=1;arrayobj[1]=2;arrayobj[2]=3;
還有刪除陣列指定下標的元素,不能直接用delete arr[i]吧
可以參考以下格式進行建立、初始化和刪除
陣列的建立
var arrayobj = new array(); //建立一個陣列
var arrayobj = new array([size]); //建立一個陣列並指定長度,注意不是上限,是長度
var arrayobj = new array([element0[, element1[, ...[, elementn]]]]); 建立一個陣列並賦值
刪除元素
array.pop();//刪除最後一個元素,並返回該元素
array.shift();//刪除第一個元素,陣列元素位置自動前移,返回被刪除的元素
array.splice(start,delcount);//從start的位置開始向後刪除delcount個元素
6樓:
因為你這根本不是陣列
7樓:銀祭
這個很簡單啊,刪除一次下標重新計算,你可以在刪除一次的時候,for迴圈刪除下一次的時候i-1就可以了。
希望對你能有所幫助。
如何刪除js裡array陣列的任意行
8樓:匿名使用者
用 splice ( array.prototype.splice ) 方法。splice 方法修改陣列內容,刪除對應項,新增新的項。
array.splice( start ); // 從第 start 項開始刪除後面所有項
array.splice( start, deletecount ); // 從第start項開始,刪除後面deletecount 數量的項
array.splice( start, deletecount, item1, item2 ... ); // 從第start項開始,刪除後面deletecount數量的向,並用 item1, item2 ...
替換。
對於你的需求,例子如下:
var arr = [ 0, 1, 2, 3, 4, 5, 6 ];
arr.splice( 3, 1 ); // 刪除陣列第三項
console.log( arr ); // output [ 0, 1, 2, 4, 5, 6 ]
9樓:
array.prototype.splice()三個引數:
第一個是 陣列的開始位置
第二個是 陣列的長度
第三個是 要替換的內容
10樓:匿名使用者
插入 刪除 好像只能操作首尾吧
c++中用delete釋放掉一個陣列元素的空間相當於刪除該元素嗎 10
11樓:種燒餅的怪叔叔
1、delete不能用於釋放陣列,只能用於指標,並且指標所指的儲存空間是由new申請的。也就是說一個new對應一個delete。
2、例項:
int *p,a;
int b[5];
p=&a;delete p;//非法
p=new int [5];delete p;//合法p=b;delete b;//非法
3、delete之後,只是把指標所指的空間交回給系統,但是指標依然存在。
12樓:
你要這麼理解
//a自身在作用域外被釋放
13樓:冰血無雙
如果陣列中存放的 是 new出來的指標 需先遍歷陣列 delete每一個元素 然後在清空陣列
14樓:匿名使用者
是的,但是隻能刪除通過new產生的陣列。直接寫成delete a就可以了(假設陣列名是a)
15樓:
不是那樣的,他知識釋放,並沒有從這個記憶體空間刪除。
16樓:匿名使用者
釋放一次,可以清出來記憶體,比如你要這麼理解
new定義就相當於餐廳的包場,可能客人(陣列元素)坐不滿,所以在使用完之後解除包場(釋放記憶體),跟客人(陣列元素)在不在場沒關係。
js刪除陣列中的元素delete和splice的區別
17樓:珞硃砂
splice刪除後將返回一個新陣列,包含被刪除的元素, delete則返回布林值。splice刪除元素的同時會縮短原陣列長度,delete只是刪除元素,並不會修改陣列長度。splice可以批量刪除多個連續的元素,delete只能逐一刪除。
方法一:delete 刪除陣列,delete textarr[1] 結果為: [ "a",undefined,"c","d"] ,只是被刪除的元素變成了 undefined 其他的元素的鍵值還是不變。
方法二:aplice 刪除陣列,splice(index,len,[item]) 註釋:該方法會改變原始陣列。
index:陣列開始下標 len: 替換/刪除的長度 item:
替換的值,刪除操作的話 item為空。textarr.splice(1,1); 結果為:
["a","c","d"] 直接刪除了陣列 改變了陣列的值。
陣列物件splice方法:arr.splice(1,1);這種方式陣列長度相應改變,但是原來的陣列索引也相應改變,splice引數中第一個1,是刪除的起始索引(從0算起),在此是陣列第二個元素第二個1,是刪除元素的個數,在此只刪除一個元素,即'b';此時遍歷陣列元素可以用普通遍歷陣列的方式,比如for,因為刪除的元素在陣列中並不保留。
18樓:黑馬程式設計師
1、delete方法:delete arr[1]這種方式陣列長度不變,此時arr[1]變為undefined了,但是也有好處原來陣列的索引也保持不變,此時要遍歷陣列元素可以才用
2、陣列物件splice方法:arr.splice(1,1);
這種方式陣列長度相應改變,但是原來的陣列索引也相應改變splice引數中第一個1,是刪除的起始索引(從0算起),在此是陣列第二個元素
第二個1,是刪除元素的個數,在此只刪除一個元素,即'b';
此時遍歷陣列元素可以用普通遍歷陣列的方式,比如for,因為刪除的元素在
陣列中並不保留。
19樓:好程式設計師
delete和splice都可以刪除陣列中的元素,但是有些區別的,我舉具體的例子給你看,你看後就明白了。
例如有一個陣列是 :var textarr = ['a','b','c','d'];
這時我想刪除這個陣列中的b元素:
方法一:delete 刪除陣列
delete textarr[1] 結果為: [ "a",undefined,"c","d"]
只是被刪除的元素變成了 undefined 其他的元素的鍵值還是不變。
方法二:aplice 刪除陣列
splice(index,len,[item]) 註釋:該方法會改變原始陣列。
index:陣列開始下標 len: 替換/刪除的長度 item:替換的值,刪除操作的話 item為空
textarr.splice(1,1); 結果為: [ "a","c","d"] 直接刪除了陣列 改變了陣列的值。
j**ascript中如何刪除陣列中指定元素後形成新的陣列
20樓:霧中天茶葉
var sourcearray = [1,2,0,0,0,0,6];//原陣列抄物件
21樓:雨月藍
window.onload = function ()
}for (var i = 0; i < arr.length; i++)}
22樓:匿名使用者
定義和用法
splice() 方法向/從陣列中新增/刪除專案,然後返回被刪除的專案。
註釋:該方
回法答會改變原始陣列。
語法arrayobject.splice(index,howmany,item1,.....,itemx)
具體參考
編一對已知陣列a刪除陣列中某個元素的程式
private sub command1 click dim a as variant a array 1,6,8,3,5,9,10,2,7,4 for i 0 to ubound a if a i 10 then for j i to ubound a 1a j a j 1 next j a j ...
幫忙除錯C語言程式,刪除陣列中的元素(函式呼叫),3Q
如果你只是刪掉為k的值,然後輸入的話,只要一個for迴圈就夠了,把不等於k的值直接輸出就行,不用再存入陣列裡了,如 include void main else printf d x i printf n include int count 9 main int flag int i int del...
C語言中 二維陣列與三維陣列在使用過程中主要起什麼作用?它表
實際上是資料的一種組織方式,你可以想象成 二維陣列 行x列的長方形 三位陣列 長x寬x高 的長方體 在c語言中,陣列的意義,就是讓陣列的名字可以當作指標來使用,這樣就能很方便的定位資料。比如你有一個陣列arry 300 300 300 那麼他能儲存300 300 300 27000000個資料,如果...