-
#include ""void prt(int *x,int *y,int *z) main() 另乙個詞 z; (和 ++ 處於相同的操作級別,並且從右到左組合); *(z++) 是先輸出 40,然後加位址,不加元素,加上 *(z++) 這個格式是加位址; 因此,輸出後,z 的位址發生了變化,而不是原來的變化,如果再次呼叫,您仍然將 c 的值傳遞給 40,並輸出它,然後新增位址; a 和 b 的值發生變化; 你要記住第一句話,我把這句話括起來; *z++,就是拿元素加法,如果沒有*號就是位址加法,如果你把z設定成乙個陣列,然後,給他兩個元素,按照你上面的*(z++)他可以第二次輸出第二個元素,記住,只在陣列裡加位址,鍊表, 也就是說,必須有乙個字串;如果不是單個,則可以使用新增的位址,並且必須在同乙個字串中;
-
函式prt的第三個引數指標z是在列印函式中用*(z++),那麼它其實是先是位址運算,然後輸出位址中的值,當指標z指向主函式中的引數c時,對指標z進行自增運算, 然後指標 Z 指向變數 C 後面的位址,這是乙個我們不知道的位址,或者是乙個無意義的記憶體位址。由於指標 z 的形式為 z++,所以它是後處理運算元,在輸出儲存在 z 中的內容後,執行指標運算,所以值不會改變!
-
<>在這個程式中,我們首先提示使用者輸入正方形的尺寸,然後輸入正方形的元素。 接下來,我們通過遍歷正方形的每一行並使用指標指向每行相應列中的元素來找到正方形矩陣的對角線元素的總和。 最後,我們輸出結果。
程式輸出示例如下:
#include
int main()
方陣的大小。
int n;
printf("enter the size of the matrix: "
scanf("%d", n);
方陣。 int matrix[n][n];
printf("enter the elements of the matrix: ");
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", matrix[i][j]);
求對角線元素的總和。
int sum = 0;
for (int i = 0; i < n; i++)
指向對角線上元素的指標。
int *p = matrix[i] +i;
sum +=p;
printf("sum of the diagonal elements: %d", sum);
return 0;
<>在這個程式中,我們首先提示使用者輸入正方形的尺寸,然後輸入正方形的元素。 接下來,我們通過遍歷正方形的每一行並使用指標指向每行相應列中的元素來找到正方形矩陣的對角線元素的總和。 最後,我們輸出結果。 >>>More
這個問題本身有問題。
結果沒有初始化,沒有指向任何空格就傳遞給add函式,這本身就是錯誤的,當然也可以實現,在add函式中申請乙個位址來儲存結果,並將位址發回給結果,但是該位址的**是無法控制的, 容易造成記憶體洩漏。 >>>More
for (int i=0;i<4;i++)x*=*(p+1);
等效。 for (int i=0;i<4;i++)x=x*a[i]; >>>More