1樓:匿名使用者
你知道基礎的變化吧: a[1]=*(a+1)用代數的知識,假設 b=a+1, b[1]=*(b+1)那麼 (a+1)[1]=*((a+1)+1)=*(a+2)所以 *(a+1)[1]=*(((a+1)+1))=**(a+2)
其實就是指向第三行第乙個元素。
**檢驗:
#include
using namespace std;
int main()
;cout<<*((a+1)[1])<
輸出:555
c語言中*(*(a+0)+1)是什麼意思
2樓:飛天失憶豬
a指向乙個二維數列,是乙個指標的指標,*(*(a+0)+1)是第一行第二列元素的值
30題,c語言的,請問一下f(a+1).f((a+1))什麼區別,不明白 ,謝謝
3樓:匿名使用者
本題考察的是巨集復定義替換
的內容制
f(a+1) = a+1*a+1*a+1 = 3 + 3 + 3 + 1 = 10;
f((a+1)) = (a+1)*(a+1)*(a+1) = 4 * 4 * 4 = 64;
第乙個式子中 a+1沒有括號,直接替換x,這是計算機固定寫死的執行方式。用a+1替換巨集定義中的x就是a+1*a+1*a+1;
第二個中a+1被作為乙個整體,替換。
4樓:匿名使用者
f(a+1) = a+1*a+1*a+1 = 3 + 3 + 3 + 1 = 10;
f((a+1)) = (a+1)*(a+1)*(a+1) = 4 * 4 * 4 = 64;
第乙個式子中 x 為 a+1,用a+1替換巨集定義中的x就是a+1*a+1*a+1;內
第二個作類似替換。容
5樓:year醫海無邊
a錯在bai
"string" 有7個位元組
而定義char [6]只有du6個位元組空間在編譯zhi的時候, c對這個限dao制不高頂多報乙個警內告
不會報錯容
誤的。這種越界, 在c中是要靠自己把握的。
就像char s[2]= "asdfasdfasdf";
這個在編譯的時候 一樣不會報錯, 但很明顯是不對的。
6樓:匿名使用者
這是巨集定義替換,s=3+1*3+1*3+1=10
t=(3+1)*(3+1)*(3+1)=64
如果是函式則兩者是一樣的
7樓:匿名使用者
第乙個是3+1*3+1*3+1
第二個是(3+1)*(3+1)*(3+1)
c++中a是乙個char指標 如果char*a="bcd" *++a與*a++以及*(a++)結果會有什麼不同呢?
8樓:莊政警
*a++和*(a++)是一抄樣的,++優先順序高於* ,所以a是和++連在一塊的,和有沒括號沒關係,因為是後++,所以a在這個表示式中的值是它的當前值,在這個表示式求值完畢後,才執行a=a+1,這個次序和優先順序是兩回事
同樣的道理*++a和*(++a)也是一回事,前++的特性使得a在這個表示式中的取值是a自增一次後的值,也就是說在表示式求值前先使得a=a+1,然後才求表示式的值
所以*a++和*(a++)一樣 都是先取a的值(就是字串中字元b的位址)然後求*a 就是'b' ,求值完成後 a+=1,a指向第二個字元c了
*++a和*(++a)一樣,先讓a增加1個單位,a+=1,a指向第二個字元了,然後取*a 就是'c'了。
開始學習時很容易把自增運算子和優先順序概念混淆,前面兩位就是
9樓:
*++a = c;
*a++ = b;
*(a++) = c
10樓:匿名使用者
*++a與*(a++)的結果是一樣的都為c,*a++結果是b
c語言中,&a+1和&(a+1)的區別是什麼
11樓:匿名使用者
語句中,b = *a+1 -- 指標a 指向的數值加1,*a 是數值, b 等於 那個數值 加 1。
或 把a看成陣列元素 b = a[0] + 1;
*(a+1) -- 指標 (a+1) 指向的數值b = *(a+1) -- 可以看成陣列元素 b = a[1];
12樓:匿名使用者
a是指標?是的話,&(a+1)就是a指標指向的地方+1(型別)的位置;若是指向的是陣列的話,&a+1就是增加整乙個陣列的位址了。比如int b[8],*a=b,&a+1就是增加4*8=32個位元組了。
13樓:聽不清啊
c語言中,
"a"佔2個位元組,乙個'a'和乙個'\0'(字串結束符),它是乙個字串。
'a'就只佔乙個位元組,即單個字元'a',它是乙個字元。
14樓:匿名使用者
c語言為了使寫法更方便,單條語句更簡短,增加了縮寫形式。
這兩種方式是一樣的,沒有任何區別。
除此之外,還有a *= 1,a %= 1,只要是操作符都可以。
15樓:我是你0爸
呃,,,樓上的各位都沒有答到本質上 從本質上講,「a」是乙個指標常量,而'a'則是乙個數值。也就是說,在編譯器看來,「a」的值是乙個位址(比如:0x84f39ea0),而'a'的值則是a的ascii碼(即97)。
樓主用printf列印這兩個值看看就知道了 另外,當「」裡的字串有多個字元時,它指向字串的第乙個字元。
16樓:匿名使用者
&a+1是a的位址加上1,&(a+1)是(a+1)的位址
&是位址運算子和引用運算子
17樓:匿名使用者
注意,後者是非法的。
18樓:匿名使用者
int b[2];
int *a;
a=b; //a指向陣列b首位址,暨b[0]的位址*a + 1 // *a就是取a指向位址的值,暨b[0],所以*a+1 == b[0]+1
*(a+1) // a+1,指標+1,就是指標指向下乙個位址,暨b[1]的位址,所以*(a+1)== b[1]
19樓:燕清揚
例如a=2;
a++;輸出結果為2;但是記憶體中它的值自加1了。(先輸出a再運算)例如a=2;
++a;輸出結果為3;記憶體中也是3.(先運算a再輸出值)。
例如a=2;
a+=1;意思等同於a=a+1;
20樓:匿名使用者
取a的位址加1
取a+1的位址
21樓:匿名使用者
a++:a先建立自身的乙個副本,然後a自增1,最後返回副本的值a+=1: 事實上相當於++a
a=a+1: 雖然有點雷同於a+=1,但不同的是此時右值的a和1做相加操作,形成乙個副本然後賦值給a,所以有額外操作
++a:將a自增1並返回a
鑑於a++和++a的差別,c++primer建議用++a作為for迴圈的遞增量。
以上討論不僅限於int,還著重於對類的過載設計時的考慮。
22樓:認不倒你
&a+1 :a的下乙個位置的指標
&(a+1): 錯誤
23樓:
事實上是一樣的
a>>=1的意思就是a>>1並賦值給a;
可能執行的效率會有錯
24樓:曉呈呈
a++ 先取值再自加
++a 先自加再取值
a+=1 等同 a=a+1
25樓:匿名使用者
這裡的a=&a[0][0];
a+1=&a[1][0],也就是過了乙個a[0][1],因此是加了8個位元組
&a+1是跳過整個陣列的位址,也就是加了16位元組
26樓:匿名使用者
a是相當於a[0][n]
a+1是a[1][n]
n是幾就差n*4個位元組嘍
a就是陣列首位址位址
C語言問題求解?C語言問題,求解釋
簡單的說 由於你的 是非標準方法訪問變數,導致結果非常不確定,沒有固定答案,不同編譯器結果不一樣。你這樣是故意記憶體訪問越界來計算麼?為什麼要研究這個呢?因為這樣做非常明顯的違背軟體工程的。問題是這個答案是沒有標準答案的,因為編譯器會對結構內的記憶體布局稍微做調整,不同編譯器和不同編譯條件導致的布局...
求解釋C程式啊 急!c 作業求解答,急!!!
是乙個標準化輸入函式。你應該按照這個格式輸入三個整數 d決定輸入應該是整數 並依次儲存為a,b,c。這個是c語言的基礎,建議你去看看c的基礎書。foo是乙個遞迴函式。而遞迴函式都有乙個終止條件,這個函式的條件是a b 而種植的行為是輸出乙個序列,這個序列的順序是這個函式的傳入的引數序列順序。也就是 ...
下面式子中,那些是分式 哪些是整式 兩類式子的區別是什麼 1 3b 3 5,2a 5 x 2 y 2,m n
解 bai1 判斷乙個式子是否是du 分式,不要看zhi式子是否是a b的形dao式,關鍵要滿足 回 分式的分母中必須含答有字母。2 整式是有理式的一部分,在有理式中可以包含加,減,乘,除四種運算,但在整式中除數不能含有字母。單項式和多項式統稱為整式。3 整式是 x 3,4 3 b 3 5,2a 5...