1樓:豆豆的人啊
差不多一樣快,編譯器會把陣列翻譯成指標,因為電腦只認識位址,多了翻譯這個過程,可以忽略不計,那種用的順手就用那種。
2樓:yzx浪子
不,反而是三維陣列比三維指標更快一些。
陣列在記憶體中將會連續地儲存在棧中。
首先讀取棧資料就比讀取堆資料快。
其次"連續地儲存"表示所有資料都連在一起,也就是說其實n維陣列都是1維陣列,編譯器會在編譯的時候就將下標計算出來,比如對於三維陣列int[4][5][6] a;,其實就是乙個有4*5*6=120個int的一維陣列,當我讀取a[1][2][3]時編譯器會計算出其下標為1*5*6+2*6+3=45,讀取時就會直接讀取a[45]
而讀取三維指標就要麻煩得多,對於三維指標int***a;,讀取a[1][2][3]時,所有資料都只能在執行時讀取,首先要讀取a[1]獲取到乙個二維指標int** p1;,然後再讀取p1[2]獲取到一位指標int* p2;,最後再讀取p2[3]才能獲取到需要的資料,也就是說實際上總共訪問了三次堆記憶體。
可見三維指標比三維陣列要更慢。
為什麼指標運算比陣列運算快得多
3樓:網友
陣列運算,一般是陣列首位址加上下標得到目的元素位置,則,訪問乙個資料元素,要經過乙個加法運算,會耗用一定的計算機時鐘週期來進行這樣的運算,這是額外的時間開銷。
用指標訪問資料時,指標變數一般是自加運算(++或者自減運算(--這兩種運算一般在cpu中有專門的單週期運算指令與其對應,效率要比做加法高得多,因此節省了操作及運算時間。
指標與陣列哪個效率高?
4樓:網友
指標和陣列的執行機制是相同的,都是按指標方式執行的,陣列在實際執行時先由編譯器轉換成指標解釋。嚴格來說,指標肯定比陣列效率高——高一點點,現代編譯器對此的優化使兩者幾乎完全看不出來,其實他們效率的差距本來就非常小。
5樓:網友
這三種 2和3是相同的 對編譯完後的程式是一樣的。
1和2是完全不同的 所以無法比較好壞。
6樓:車開往**
一樣,陣列名就是陣列的首位址。
7樓:網友
當然是指標 指標式c語言的精華。
求助~~c語言的三維陣列與指標!!!
8樓:練鵬堂和正
從罩梁a[1][0][1]開始連續取4個元素值(按殲掘位址從低到高)賦給bak,就是氏悶核a[1][0][1],a[1][0][2],a[1][0][3],a[1][0][4]這4個。
9樓:逢歌辛興騰
指標也可以指向陣列。p就是乙個指向一維陣列的指標,這個一維陣列的長度為9。二維陣列可段雀以理解握核早為由多氏猛個一維陣列組成。
str實際上是乙個指向一維陣列的指標常量。所以p=str就對了。
行指標與三維陣列問題
10樓:求學解惑
printf("%3d",*(p+i)+[j][k]))//這一行中 [j][k] 指什麼 編譯出錯。
應該改為:printf("%3d",*(p + i) +j) +k));
解釋:*(p + i) = s[i]; //此時 + i = i * 3 * 4
*p + i) +j) = s[i][j]; //些時 + j = j * 4;
*p + i) +j) +k) = s[i][j][k]; //些時 + k = k
綜合:*(p + i) +j) +k) = *(int*)p + i * 3 * 4 + j * 4 + k ) //好好體會吧。
建議:你對指標的運算知識還需要加強。
c語言 利用指標輸出三維陣列 問題
11樓:斂雋潭驪文
明確一下陣列唯陵的旁運概念比如:arr[2][3][4]123a 0...1...
b 0...1...2...
c 012301230123012301230123
你程式裡ptr1相當於運山樑上面圖中c的位置,沒問題。
你程式裡ptr2相當於上面圖中b的位置,需要i*j個。
你程式裡ptr3相當於上面圖中a的位置,需要i個。
具體的**,你自己再改改吧。
陣列快還是指標快?比如 int a[5]={2,3,3,3,3};int * p;p=a; 那麼*(p+3)與a[3]比較哪個更快嗎?解釋一下。
12樓:網友
*(p+3) 會多做一些的運算。
如果a在棧上那麼a[3]編譯器會優化成和普通變數一樣的訪問速度。
13樓:網友
是一樣快的,陣列在c++中的定位就是通過指標來的,就是說a[3]在計算機中執行的就是你的指標寫法。
14樓:網友
一樣快的,下標訪問方式[ ]編譯器將會解析成位址運算方式。
15樓:網友
指標相對快一些,因為下標符需要乙個翻譯過程,而指標是直接訪問的。
16樓:離火vs戰玄
編譯速度不一樣,執行期速度一樣,彙編指令相同。
c語言-指標-指向三維陣列
17樓:網友
int i,j,k;
char **m = (char***malloc(h* sizeof(char**)//定義動態三維陣列m
for(j=0; j}char *n;
n=(char *)malloc(sizeof(char )*h);
for(i=0;i<=h;i++)
n[i]=m[i][6][32];
為什麼沒有三維指標的疑問以及多維陣列的用處
18樓:折柳成萌
char a[先定義乙個三維陣列:
char b[2][3]=;假設這是乙個二維陣列。
char *c =
strcat(b,c);/把c和b相連線。
strcat(a,b);/a再和b連線。
最後a
c語言三維陣列三維陣列怎麼理解c語言
先說二維,可以這麼理解 int n 3 有3個int 那麼,int m 5 3 有5個int 3 賦值時 n 1 3把3給1號 m 4 m 4 是個int 3 型別,這麼賦值,也就是這麼賦值 m 4 的 0 是5 m 4 0 5 m 4 1 9 m 4 2 4 懂了嗎?三維甚至更多維大同小異,比如 ...
什麼叫三維動畫,三維動畫是什麼
想要系統的學習可以考慮報一個網路直播課,推薦cgwang的網路課。老師講得細,上完還可以回看,還有同型別錄播課可以免費學 贈送終身vip 自制能力相對較弱的話,建議還是去好點的培訓機構,實力和規模在國內排名前幾的大機構,推薦行業龍頭 王氏教育。王氏教育全國直營校區面授課程試聽 複製後面連結在瀏覽器也...
三維家比酷家樂好嗎,三維家和酷家樂比怎麼樣?
二者都是做效果圖 的軟體,也都可以進行vr全景體驗。不能單純的評價哪個優 專劣,要看使用者物件屬,三維家軟體操作簡單 上手快,試用一下基本就會了。採用雲渲染的技術,10秒鐘就可以出圖了呢,並且對電腦配置要求比較低,您可以嘗試一下哦。三維家和酷家樂比怎麼樣?現在這兩家bai家居軟體公du司可是資本的z...