1樓:網友
英文註釋已經解釋的很清楚了啊,不認識用個詞典查一下。
2樓:網友
p_line[i][j]儲存的是元素,指標和陣列名存放的是位址。你定義的是int* p_line[3],如果輸出p_line[i]的話,輸出地是位址。而p_line[i][j]相當於*(*p_line+i)+j)。
所以輸出的是元素值。
array2+i是加在了行標上,所以*(array2+i)輸出地是第i行的首位址。至於原因,是因為二維陣列在記憶體中是按行儲存的,即先排滿第一行,再排第二行。而且一維陣列元素在這表示的是二維陣列元素碧納的位址。
而*(*array2+i)+j)==array2[i][j],表示的是陣列第i行第j列的元素。其實和悔做沒第乙個程式不衝突。
array2+i)表示的是第i行元素的首地胡纖址,即array2[i][0]的位址。訪問方式就是按行訪問,先找第幾行,即*(array2+i),再找該行的第j個元素,即*(*array2+i)+j)。
c++指標問題
3樓:流行狼月
一般指標通過取位址的方式去獲得了乙個資料空間的位址char *p = &s;(假設s是乙個陣列);動態指標的初始化char *p = malloc(10*sizeof(char))或者char *p = new(10*sizeof(char)),那麼這個p指向的陣列存放的資料就不是連續的了,就是說p指向了不連續的空間,而靜態分配(一般的指標),你很明顯的看到它取址了乙個陣列首位址,這個陣列中存放的值必然是連續的,就是說p指向了一塊連續的空間;
new一般是限於c++使用的(c中不常用),new一般用於開闢堆空間,malloc可以開闢堆也能開闢棧。
區別之一:new開闢的空間,會呼叫空間的建構函式,被new的空間會被初始化一定的數值。
malloc 開闢的空間只是告訴你這塊區域能存放某一種型別的資料但是這個時候具體資料並沒有存放,要後期賦值。
區別之二:malloc 開闢的空間在函式結束的時候,會被自動free(p);p = null;並且那塊空間也不被釋放了,(簡而言之,在哪個函式開闢,就在哪個函式結束時候被釋放,但是new 則需要呼叫相應的解構函式才能被釋放,i必須使用delete 去手動釋放,假設你不手動釋放,對不起,你記憶體洩露了,這個空間資料一致存放在那,但是你的指標p被free了,所以你找不到那塊位址了,也就是不可見了。這個程式每執行一次,你2g的記憶體就會少一塊空間,顯然你不願意,那麼記得要釋放哦。。。謝謝。
4樓:網友
指標(不論動態還是靜態)都有作用域,只能在同一作用域內被呼叫。動態指標如果不釋放,一直存在,但是在其他函式中不可見,自然不能呼叫,獲取其中資料。
注意:存在和可用,是兩個概念。要想使用某個個體,必須滿足:
1. 該個體存在。
2. 該個體可見。
5樓:網友
你說清楚一定,是指標指向動態建立的記憶體,還是動態建立的指標?動態建立的記憶體在釋放之前都是可以訪問操縱的,只是,需要用指標來引用它,不可見只是這個指標無法使用。
c++函式指標問題
6樓:榮風公又夏
你要是能弄清楚了什麼是指標就能明白了。p是指標,首先指的是p是個變數,p有自己的儲存位址&p,然後p這個變數存放的是位址。aa是個指標,也有自己的儲存位置&aa,aa的值指向乙個函式的位址,這個函式就是你定義的那個函式,所以執行p=aa,就是把aa的值賦給p,p=aa執行的是把你所定義的函式位址給了p,所以p也就執行了你定義的那個函式,所以能正常執行。
而p=&aa是什麼意思呢,&aa是把儲存aa的位址給了p,且不說語法是否正確,這種情況下p的值是個位址,但不是函式的位址,而是aa指標的位址,而問題是aa的值才是函式的位址!!!
7樓:淦邃洪霈
p=aa就是將aa函式的位址賦值給p了。就像定義乙個陣列。
inta[10],則a就是這個陣列的首位址,而不是&a
8樓:棲鳳婷
typedef void(* a)(int);把a宣告為乙個函式指標,它所指的函式接收乙個int型的引數。
typedef void(* b)(void *,int);把b宣告為乙個函式指標,它所指的函式接收兩個引數,乙個為未知型別的引數,乙個為int型的引數。
何為指標?指標即為位址。
現在我們假設記憶體中有兩個函式fun1,fun2.
a指標原本是指向函式fun1的。a a=fun1;假設有乙個記憶體位址0x123456,那麼這個記憶體位址儲存的內容就是記憶體中fun1函式的位址。
b b = *(b*)&a;這裡的(b*)把a指標的儲存位址即0x123456,強制型別轉換為b指標。但是轉換的是指標指向型別,而不是指標位址也不是指標位址儲存的內容。括號前的*再次將指標b指向a的記憶體位址,也就是0x123456.
綜合起來說就是,a和b的指標位址即在記憶體中的儲存位址都是一樣的,即為0x123456.
說實話,上面是我的分析,我並不是百分百確定,因為我不知道這段**意義何在。
c語言編寫程式困惑高手解答,C語言程式設計問題 求高手解答
while count printf 4d link h number link h number 0 count 這個演算法主要是雙while迴圈這裡。首先while count while i 3 內迴圈的意思是每數三次排除乙個當前元素。如果不等於3的話迴圈繼續往下數,等於3的話迴圈終止,進行迴...
C語言程式問題,求高手 C語言問題,求大佬解答
我嫌麻煩是否可以把print star 換成別的字母 是可以的,可以按照你說的換成void a 也行。這只是初學者用用。你以後開發大程式,這麼多函式,你能分得清什麼函式做什麼用麼?所以要養成好習慣。括號是帶參。下劃線也沒有什麼固定的意義,就是增加程式的可讀性。不懂再問。望 可以。裡面是用來放引數的 ...
求解答c語言程式題,求解答C語言程式題
內容來自使用者 kcd9272 三 程式題 1 程式設計序解百雞問題 100元錢買100隻雞,公雞每只3元,母雞每只5元,小雞3只1元,問公雞 母雞 小雞各多少只?include int main 2 求出100 999的所有的水仙花數 水仙花數既xyz x x x y y y z z z incl...