1樓:cpp後學
雖然沒有分,不過我還是再補充一點.
(執行以上為什麼沒出錯出)如果你執行真的沒錯,那我可以肯定你用的是vc6.0
那種98年的編譯器還是換一換吧.
你要明白&a是陣列的地址,在c++中陣列是由指標實現的(c中應該也差不多),所以&a也可以理解為陣列指標. 你直接用它對char *p初始化是非法的.需要進行強制轉換.
char *p = (char*)(&a);
或者賦值給一個同樣的陣列指標那麼要顯示字串a就要用**p.
明白否.
&a是合法的.它代表a[3]整個陣列在記憶體中的地址.
理解下面的**對你應該有幫助.c++版的,加了註釋,應該看得懂.
# include
int main()
; int *ptr = (int*)(&a + 1);
std::cout << *(a + 1) << " " << *(ptr - 1) } /* 輸出結果是: 2 5 在上面的**中, a 是一個陣列,&a 則為整個陣列在記憶體中的地址,&a + 1 等價於 &a + sizeof(a) , 將這片記憶體賦給指標 ptr ,ptr中儲存的即為它的首地址,也就是a最後一個元素的下一位(超末端),因為 ptr 是一個指標,所以 ptr - 1 等價於 ptr - sizeof(int*).*/ 2樓:匿名使用者 你好:(1)a在這個地方是一個地址常量,所以我們可以把它賦值給p; (2)&是一個取地址符,取的是變數的地址,所以&a在此處就是錯誤的所以他們顯然是不一樣的 祝你好運! 3樓:匿名使用者 第一個: int *p=a,宣告一個指標並且初始為陣列首地址。等價於int *p;p=a;正確。 第二個: int *p=&a;編譯錯誤。錯誤資訊如下: error c2440: 'initializing' : cannot convert from 'int (*)[3]' to 'int *' 等同與int *p;p=&a;這是錯誤的。 a[]是一個陣列,&a[3]表示什麼意思?c++ 4樓:樊昊天 這是關於指標方面的知識,&是取地址運算子,就是取a[3]的地址,如還不懂可以追問我 5樓:匿名使用者 獲取陣列a第四個元素的地址 6樓:冷血 a陣列中的第四個元素,下標為0的話。 7樓:育知同創教育 表示取第三個元素的值 為啥a表示陣列首地址而&a表示陣列地址? 8樓:匿名使用者 打個比方: 一個樓 有多個單元,如2個 一個單元 有多層,如:30層 一層有多戶,如4戶 一戶有多個人,如3口 這樣我們可以建立一個四維陣列 people arrp[2][30][4][3] ; arrp即是樓的首地址 也是第一層的地址 也是第一家的地址 剛好有個人站在門口,也是這個人所在的地址 即 只是這許多的地址,代表的意義不同 嚴格說a=&a[0] &a + 1 是下一棟樓 a+1是下一層 = &a[1] 你能理解意思就可以,非要從編譯原理去講,有點累,不如自己去研究體會一下 9樓: 如果有int a[10];,則a是陣列第一個元素a[0]的地址&a[0],由於它是陣列的第一個元素的地址,所以有人稱之為陣列的首地址。而&a為什麼是陣列的地址,實際上是一種語法約定。這是因為在int a[10];前提下,&a[0]+1應該等於&a[1],而&a+1應該等於&a[10],就是說要跳過整個陣列a,所以叫陣列的地址。 其實對於一維陣列&a並沒有多少意義,有a就足夠了;但對於多維,比如二維陣列,從第一行跳到第二行(或多維陣列的第n行),從上面的分析知,引入陣列地址就很方便了。 10樓:匿名使用者 一個意思 a &a &a[0] 是同一個值 就是同一片記憶體的指標 c語言, a就是陣列的首地址啊,那a++不也是地址嗎? 還有,p[5]表示什麼? 11樓:金色潛鳥 a是陣列的首地址,那a++ 也是地址, 這裡的地址 是: a地址 + 1 * sizeof( a 的型別)p[5] 在宣告裡表示 宣告 p 是陣列,它有5 個元素。例如: int p[5]; p[5] 在語句裡表示 下標變數,它是陣列p裡的第6個元素。 因下標 從 0 起始。 例如:p[5]=666; 語句裡 有等式: p[5] == *(p+5); -- 下標變數 與指標關係。 12樓:滿地花傷 這裡的a++的a不是常量int,所以仍然是地址,p[5]表示p陣列的第5個數 13樓:匿名使用者 如果是int a[10];這裡的a是陣列的首地址,但是const int*型別,也就是常量指標,它的指向不能修改,所以a++是不允許的。 如果有int *p = a; p++就是指向了下一個整形的地址。 p[5]就是第6個元素。(而不是地址了,是地址對應的整形數) 比如定義一個二維陣列 int a[2][3]既然陣列名a是陣列的首元素地址, 那麼為什麼*a也是 14樓:一位網際網路從業者 二維陣列實際上也是一維陣列,只不過這個一維陣列中的元素比較特殊,每個一維陣列元素又是一維陣列。 打個比方,a[2][3]可以理解為一個一維陣列a[2],只不過a[0]a[1]元素,是一個陣列。 *a是陣列的首個元素,不是地址 15樓:弒緋 你的理解錯了,雖然在你的所說的陣列裡,a和*a確實都是地址,但是兩者是有區別的。 1、首先說a,這裡的a將你的二維陣列陣列看作兩個一維陣列:a[0],a[1](將本來每一行的所有元素看作一個整體),a指的是第0行的首地址。 2、*a,這裡是指將二維陣列看作一個整體,*a指的是這個二維陣列的第0行第0列的首地址。 c語言中二維陣列的a代表是0行首地址,那*a不就是首個元素嗎,為什麼*a代表的還是首個元素的地址 16樓: 哈哈!以下標從0開始說。若a是二維陣列名,則a作常指標使用時,a是第0行的指標,*a是第0行的第一個元素的指標(二者值同,意義不同),**a是第0行的第0個元素的值。 這可以用以下**驗證: int main(void); printf("%d\n",**(a+1)); return 0; }輸出肯定是4。這說明,既然a是第0行的指標,那麼a+1就是第1行的指標,*(a+1)則是第1行第0個元素的指標,**(a+1)當然就是第1行第0個元素的值4了…… 17樓:聽不清啊 c語言中二維陣列的a代表是a陣列的首地址(值與0行首地址同),所以*a不是首個元素,*a代表的是0行的首地址,**a才是對首個元素的引用。 18樓:雙子牛總 胃口幾幅畫雞骨頭氣溫會偷偷去hgew 陣列名是首元素的地址。所以a[0]等於&a[0][0] a等於&a[0]。為什麼a和a[0]的值相 19樓: &是取地址符號,a是陣列名,所以a就表示a[0](首元素)的地址。 同理,對於二維陣列,a[0][0]可以看做陣列a[0]的首元素,所以a[0]就是a[0][0]的地址。 在二維陣列中*a為什麼表示首地址而不是元素呢 20樓:匿名使用者 把二維陣列看做元素為陣列的陣列 則可知,*a其實就是a[0],認可看作為陣列的首個元素,只不過該元素仍是一個陣列 21樓:匿名使用者 因為指標指的就是一個地址,而不針對那個元素呀= = 魚要糧 大於10的偶數表示方法 x x 2n,n 5,n n 所有整數不是奇數 單數 就是偶數 雙數 若某數是2的倍數,它就是偶數 雙數 可表示為2n 若非,它就是奇數 單數 可表示為2n 1 n為整數 即奇數 單數 除以二的餘數是一。 三翼熾天使 結果寫成集合的形式是 x x 2n,n 5,n n... 845主機板,指的是它的北橋晶片型號是82845 965主機板,指的是它的北橋晶片型號是82865 915主機板,指的是它的北橋晶片型號是82915 945主機板,指的是它的北橋晶片型號是82945 等等以此類推。參見 http image.這是一個845g主機板去掉散熱器後暴露出來的北橋晶片 可以... 基本思路 遍歷元胞訪問元胞的每一個元素並判斷該元素是不是char型別,如果是則進行相應判斷做統計。考慮到cell內部巢狀cell的情況,需要用到遞迴,所以要把 寫成一個函式。函式 如下 function n countcell c,t n 0 s prod size c for i 1 s if s...大於10的偶陣列成的集合用適當的方法表示出來
845865915945表示的主機板型號都是啥意思
在matlab中求元胞陣列中字元出現的次數