乙個簡單的程式設計基礎概念 int a 3 on storage

發布 科技 2024-06-25
21個回答
  1. 匿名使用者2024-01-29

    c中的記憶體儲存分為靜態儲存區、堆疊區、堆區和**區。

    程式中有全域性變數、靜態變數等的靜態儲存,這些記憶在程式的持續時間內持續存在。

    程式中的自動變數存在於堆疊中,這些變數在函式進入和返回時在堆疊中動態建立和清除。

    使用者在程式中用 malloc 等請求的內存在堆中,必須由使用者顯式釋放(當然,在程式結束時也會自動釋放)。

    變數的值儲存在變數儲存中,例如,你有 int a=3; 假設這是乙個全域性變數,在程式的靜態儲存中具有 4 個位元組的記憶體,4b 記憶體的狀態是它的值。

    C 不儲存變數名,編譯器最終會使用記憶體位址來操作變數記憶體,只有一些編譯器在除錯時會把變數名資訊放到可執行程式中,因為這不是 C 標準的內容,所以不同的編譯器有不同的實現,查閱編譯器手冊或許能得到一些資訊。

    C++預設不儲存變數型別,RTTI目前在C++中非常有限,標準只在原始碼級別控制,具體實現由編譯器廠商完成,例如,乙個類的型別資訊,它屬於這個類,而不是類的例項, 所以如果要儲存這個類的型別資訊,可以把型別資訊放在程式的靜態儲存區域,然後在類中再安排乙個指標指向那裡,這樣每個例項在執行時都能得到它的型別資訊。

  2. 匿名使用者2024-01-28

    因此,int 是編譯器自動識別的此問題的內建型別。

    a 是乙個整數,編譯器將此變數放在記錄堆疊上變數型別的符號表上。

    3 是乙個常量,不在堆疊中,而是在賦值後儲存在 A 的堆疊空間中。

    差不多就是這樣。

    編譯器將自行處理特定問題。

  3. 匿名使用者2024-01-27

    sizeof(a)可以看出它應該是4位,在Windows 256*256*sizeof(a)下是A的大小,儲存是直接儲存的,應該有乙個更低的8位。

  4. 匿名使用者2024-01-26

    矩陣為:

    for(j=0;j 如果 for(j=0; j<=i;j++)原來是 19。

  5. 匿名使用者2024-01-25

    親愛的,如果你不知道這些問題,把它帶到編譯器並執行它,答案是毋庸置疑的!!

    正確答案是 14

  6. 匿名使用者2024-01-24

    A是變數名,可以理解a-3指標應該不難理解,a是開啟記憶體。

  7. 匿名使用者2024-01-23

    沒有必要為 A 騰出更多空間,該位址是 A:3

  8. 匿名使用者2024-01-22

    新手前來交流,請指教!

    就好像 3 儲存在堆中一樣,在堆疊中分配了空間 a,並儲存了指向 3 的位址。

    要確定兩個變數是否指向同乙個物件,您需要檢視它們是否指向同一位址。

  9. 匿名使用者2024-01-21

    A 還需要開啟空間,用於儲存指向空間 3 的位址。

  10. 匿名使用者2024-01-20

    a=3,a 的空間是 3,a 只是乙個位址。

  11. 匿名使用者2024-01-19

    ==我不明白你問的問題。。。你能說得更清楚嗎?

  12. 匿名使用者2024-01-18

    main()

    輸出為 6; 這裡的主要知識是陣列知識。 陣列,不管它們有多少維,在記憶體中都是一維的,可以這麼說,乙個二維陣列可以被認為是這樣乙個一維陣列,而這個一維陣列的每個元素都是一維陣列,僅此而已。 以乙個二維陣列為例,資料實際上是被 a[0][0],a[0][1],a[0][2], 壓的。

    乙個[2][2]。 此外,陣列名稱也是乙個指標,指向陣列的第乙個元素,陣列括號中的數字是相對於第乙個位址的位置偏移量。 a[3]=*(a+3) 就是這個意思。

    所以 p[i]=*(p+i); 也就是說,I 元素與 a[0][0] 偏移。 陣列元素按上述順序排列。 因此可以得出結論,a[1][2]是第6個元素,即5與a[0][0]偏移(a[0][0]是第乙個元素),所以a[1][2]=*(p+5); p[5]=5+1=6;所以 a[1][2]=6

    如果你不明白,你可以問。

  13. 匿名使用者2024-01-17

    #include

    #include

    #include

    #define maxlen 100

    typedef int elementtype;

    typedef struct

    seqlist;

    void initial_list(seqlist *l)

    int list_length(seqlist l)

    void get_element(seqlist l,int i,elementtype *x)

    int list_locate(seqlist l,elementtype x)

    void list_delete(seqlist *l,int i)

    void sort(seqlist *l)

    void insert(seqlist *l,elementtype x)

    void list_cout(seqlist l)

    list_cout(l1);break;

    "請輸入要插入的元素";cin>>

    我為你做了乙個程式,你按照你說的做了! 我除錯了程式,沒問題。

    希望您滿意!

  14. 匿名使用者2024-01-16

    -60(或 -59)。

    a++ 是新增的字尾,表示式中使用原始值 6,表示式遞增 1

    程式分為:a=a-a*a; 這給出了 = 6-6*6 = -30

    a = a+a;此步驟給出 = -30 + 30) = -60

    出表示式,然後自增量 1,即 a=a+1; a = -60 + 1 = -59.

    如果輸出:int a=6;

    printf("%d", a+=a-=a*a++) 至 -60(原因是新增了字尾,表示式不是自遞增的1)。

    如果輸出:int a=6;

    a+=a-=a*a++;

    printf("%d",a);獲取 -59(因為新增了字尾,並且表示式遞增了 1)。

  15. 匿名使用者2024-01-15

    本題考量你是否精通表示式的優先順序。

    1. 計算自增量 1

    2. 計算乘法運算。

    3.計算減法。

    4. 計算加法。

    其結果等於:-35

  16. 匿名使用者2024-01-14

    返回 A 是 42 猜對了。

  17. 匿名使用者2024-01-13

    這個二維陣列。

    它實際上是乙個具有 3 個元素的一維陣列,其中陣列的元素又是具有 3 個元素的一維陣列。

    讓我們先按行優先順序重新排列它:

    int a[3][3]=

    C 和 C++ 中的陣列從 0 開始編號,第 1 行:a[0][0]、a[0][1]、a[0][2] 第 2 行:a[1][0]、a[2][1]、a[1][2] 第 3 行:

    a[2][0],a[2][1],a[2][2],然後檢視要取的值:**中的a[1][3]? 顯然在 a[1][2] 之後,但該值已經超出了陣列的範圍(陣列有 3 個元素),即下標溢位,溢位到 **?

    由於多維陣列(儲存在 C++ 中)等價於連續的一維陣列,因此此處的溢位位置正好是 a[2][0] 所在的位置。

    現在我可以給你答案:a[1][3]=7

  18. 匿名使用者2024-01-12

    我不知道,因為a[0][0]表示第一行的第一列,a[0][1]表示第一行的第二列。

    a[1][0] 表示第二行的第一列,a[1][3] 代表第二行的第四列,這個陣列是 3 行 3 列,所以不知道 a[1][3] 等於多少,它沒有定義。

  19. 匿名使用者2024-01-11

    7a[3][3] 是 3 行 3 列。

    a[1][3] 是第 2 行的第 4 列(因為陣列的下標從 0 開始),但陣列中沒有第 4 列,第 3 行的第一列是 7

  20. 匿名使用者2024-01-10

    這是越界的,但由於二維陣列的線性儲存性質,a[1][3] 可能是 a[2][0],即 7

    我只能說也許

  21. 匿名使用者2024-01-09

    輸出值為 7完全沒問題。

相關回答
9個回答2024-06-25

double z=在倒數第二行新增double(a,b); 將 a 和 b 替換為 x 和 y >>>More

4個回答2024-06-25

01 與優秀的開發人員交流。

如果你沒有程式設計背景,試著找一些好的開發人員來指導你。 >>>More

31個回答2024-06-25

b!因為金屬是由原子組成的,而氧是由氧分子組成的。 >>>More

9個回答2024-06-25

後台程式其實只是乙個名稱,一些一般不需要手動操作的功能程式叫做後台程式,其實是普通程式。 >>>More

7個回答2024-06-25

步驟很簡單,在指定路徑下建立乙個文字檔案,自己命名,最好用字母命名,然後編寫程式。 >>>More