C 語言是個小問題,前輩給了我很多建議

發布 美食 2024-08-20
12個回答
  1. 匿名使用者2024-02-01

    我頭暈。 A 和 B 只是兩個指標。 如果不初始化它們,則它們不會指向任何記憶體空間。

    這種指標稱為字段指標)。將它們分配給 value 已經是非法的。 即 *a=10, *b=20; 這句話是不合法的。

    從頭到尾,沒有為a、b...分配記憶體。希望對你有所幫助。

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

    指標交換函式引數是指標的指標。

    整數交換也是如此。

    只需要修改以下內容:

    main()

    int a,b;

    a=10,b=20;

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

    就我個人而言,我認為 *a=10, *b=20; 這句話有問題,不能用指標直接指向乙個值,你可以從m=10,n=20開始; *a=m,*b=n; 個人理解。 請批評和糾正。

    如上所述,p 和 q 仍然是字段指標,除非在開頭給出 p 和 q,否則不會分配特定的空間為了使它成為 *p、*q=10 和 20,對吧? 指標不需要初始化,但在使用之前是否必須分配記憶體?

    否則,它是乙個字段指標,可能指向系統記憶體? 隨意換手指不是很危險嗎? 個人理解,請指教樓下,謝謝。

    也請專家提供更多建議。

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

    如果沒有 *p=*q,兩個指標指向同乙個位址,並且 *q=t 是用 *q=t 完成的,*q 和 *p 將同時更改,*a=*b=10

    樓上同學的指標不用初始化分配,*p=10正確,間接訪問操作可以讀寫。

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

    這三個問題的統一答案。

    通過輸入自己執行它。

    基礎知識不再是基礎。

    第乙個問題檢查邏輯運算子的優先順序。

    第二個問題檢查輸入格式。

    第三個問題考察程式設計思維。

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

    對於 num[.]'e'-'a']+

    e'-'a'實際上,它是與字母 E 相對應的 ACS

    程式碼減去與字母 A 對應的 ACS

    程式碼,即'e'-'a'相當於101-97=4;

    所以 num[.]'e'-'a'] 和其他引線彎曲了 num[4] 和 num['e'-'a']+

    相當於 num[4]++

    因為 num[4] 是乙個變數,所以 num[4]++ 是乙個類似於 a++ 中的淮清的自強加表示式,即 num['e'-'a']+

    是一種自我強加的表達方式。

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

    1 .首先,我們定義乙個指標陣列,pt[3] 類似於陣列,陣列名稱代表第乙個字元,指標名稱代表第乙個指標,所以 pt 應該是 pt[0],pt[0] 對應 t[0]。

    在 *(pt+l)+2) 中,我們看一下 pt+l 對於陣列,每行的記憶體是連續分配的,所以 pt+l 是當前 pt 行的下一行,即 t[1]。

    *(pt+l)+2 是指向 Pt+1 的行中的第三個字元,即 t[1][2],因此 *(*pt+l)+2) 是指向 t[1][2] 的行中的第三個字元。

    ps:for 迴圈中執行的含義是:pt[0] a,b,c

    pt[1]→ e,f,g

    pt[2]→ h ,i, j

    pt 對應於 pt[0],所以 pt+1 = pt[1]。

    2.在定義 sum 時,由於 sum 沒有初始化,編譯器會隨機分配 sum,所以 sum 會被賦值給乙個隨機數,和 之後的 sum 當然是不確定的。

    第一次呼叫 fun 函式時,在輸入引數 (a+fun(d)) 時,fun(a+fun(d)) 應該會遇到 fun(d)。

    在這種情況下,由於靜態 int d=5 尚未執行,因此傳入的引數 p(即 d)仍為 1,然後執行 d+=p;

    在這種情況下,輸出 d 等於 6

    之後,我們執行 fun(a+fun(d)) 進入外部 fun 函式,然後引數 p 等於 a+fun(d),即 9

    此時,d 等於 6,所以 d+=p 等於 15,所以 15 是輸出

    然後返回值是 d,所以它也是 15

    所以最終結果是 6 15 15

    ps.需要注意的是,靜態 int d=5 其中 d 被宣告為靜態變數,也就是說,在編譯時,變數 d 已經分配了記憶體,那麼當 fun() 函式被重複執行時,這個 d 變數就不會被重複定義,也就是當 fun 函式第二次執行時, 不需要執行靜態 int d =5。

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

    在第乙個問題中,t 是乙個陣列,pt 是乙個指標陣列,迴圈後,指標陣列指向陣列 t。 也就是說,pt 和 t 應該是相同的內容,但 t 是 const。 *(pt+1) 是 t[1],*pt+l)+2) 是 t[1][2]。

    對於第二個問題,sum 未初始化,因此答案為 C。 請記住,永遠不要使用未初始化的變數!

    第三個問題,選擇c,key是靜態int d,位址分配好後,裡面的內容要等到程式執行結束才會發布,這就是變數生存期的問題。

    最後,最好自己把這些問題輸入到編譯器中,然後用除錯功能觀察每個變數的變化,這樣會更容易理解。

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

    哦,我很高興,我剛剛學完C語言。 我來看看 Ah A: int t[3][3], pt[3], k;

    for (k=0;k<3;k++)pt[k]=&t[k][0];

    我們來分析一下執行過程:

    for (k=0;k<3;k++)pt[k]=&t[k][0];

    第乙個迴圈:pt[0] = &t[0][0] 將第乙個位址分配給 pt; ,pt+l)+2) 等價於:t[l][2] “因為 *(pt+l) 等價於 t[l],所以它是 t[l]+2,加上 * 是 t[l][2]。

    第二個迴圈的結果相同,,*pt+l)+2) 結果是 t[l][2])

    二:main()。

    sum 的值沒有初始化,所以它的值是不可預測的,用 sum 運算後的值也必須是不可預測的

    同學們,還有什麼不明白的嗎?

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

    *(pt+1)== t[1][0]; pt+1)+2) = t[1][2]

    11.事實上,一般的編譯器答案將是 a,但 int sum; 沒有初始值,預設值是否為 0 取決於編譯器,因此不確定。

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

    17 c * (pt+1) 指向 t 加 2。

    11 C 問題是不確定的,因為初始值是隨機且不確定的。

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

    11.之所以選擇 C,是因為沒有初始化,因此 sum 的值是不確定的。 19.選擇 C

相關回答
7個回答2024-08-20

解決方案 1:%g 輸出小數點後一位整數的最後一位數字,包括整數,最後一位數字四捨五入。 >>>More

4個回答2024-08-20

完整步驟如下(1342可以正確輸出)。

#include >>>More

15個回答2024-08-20

問題 1:main()。

int a,b,c,t; >>>More

8個回答2024-08-20

錯誤的問題:printf("%d,",f(++n);缺少乙個括號。 >>>More