c求解釋下面式子中a11a11怎麼來的

2021-03-04 05:47:54 字數 4147 閱讀 5475

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...