-
這裡 s 是陣列的名稱 (char s[ ],p 是指標變數。
在陣列中,陣列的名稱表示陣列開頭位址處的常量,因此這裡的陣列名稱等效於 &s[0]。
p 用作指標,位址儲存在其中,因此 p=s 等價於 p=&s[0];。 它是分配給 p 指標的 s 的第乙個位址。 在 p++ 之後,您可以依次獲取陣列中所有元素的位址。
*p 是指 p 指向的位址的值。 如果要為 *p 賦值,則必須首先為 p 賦值(即 p 必須指向位址)。 如上所述,p 指向 p=s 之後的 s[0] 位址。
如果繼續寫 *p='a';這是關於把角色'a'該值分配給 s[0] 的位址。 s[0] 是'a'。
所以你不能在這裡寫 *p=s。
定義函式是括號中的引數,例如上面的 void fun(char s,int n),其中 s,n 是表單的引數。
當您呼叫此函式 fun(s,n) 時; 這裡的 s,n 是實際引數。
-
p 為指標,p = s 為輸入引數 s 的位址賦給 p;
p 是在位址 p 處獲取的值。
p = s 是錯誤的。
-
更正了錯誤,實際操作後,結果如下:
更正錯誤後,來源 ** 如下:
#include
#include
int found(int a[10][30],int n) 錯誤,彈出錯誤 [error] 形式引數 1 型別不完整
int found(int a[10][30],int n).
int i, j, s, k, x;
for(i=0, k=1; k<=n;k++) 更改 i=0;這是乙個更改,但不是錯誤。
for(k=1; k<=n; k++)
s=1;錯誤。
s=0;糾錯,累加器,初始值為0
x=k;for(;x=n) break;
if(s==n)
for(j=0;k+j<=x;j++) 錯誤,最後 1 個元素缺失for(j=0; k+j<=x;j++)校正。
a[i][j]=k+j;
i++;return i;
int main()
int a[10][30]=;
int i,j,n,m;
printf("n=");
scanf("%d",&n);錯誤。
scanf("%d",&n);正確:n --nm = found(a,n);
if(m>0)
printf("%d serials ",m);
for(i=0;i
-
第二行有乙個額外的分號,應該刪除。
-
只需使用迴圈來移動元素和長度 -= k。
-
2)將q重新指向乙個常量後,q指向的常量的內容無法修改,因此無法更改為q="pear"緊接著,使用 scanf ("%s", q);
3) 將值分配給指標,直接指向 q= 的字串"oringe"另外,*q 是取 q 指向位址中的值,這裡是取第乙個字元,所以不能用 %s,需要用 %c,要輸出乙個字串就用 printf ("%s", q);
4)沒有錯誤。
-
1 錯誤 d 不能直接賦值,但應該使用 strcpy2 錯誤 q 是常量字串,是唯讀的,不能用於 scanf3 錯誤 *q 是字元型別,不能賦值字串。 同時,q 沒有分配空間,*q 是溢位操作。
4 正確。
-
1.錯誤的陣列不能直接分配和輸入。
2. 是的。 3. 錯誤 *q 表示字元,不能用字串分配。
4. 是的。
-
第乙個問題是錯誤的。
第二個問題是正確的。
第三個問題是錯誤的。
第四個問題是正確的。
從**本身和執行情況來看,可執行程式的內容與貼上的**不匹配(可能是修改後沒有重新編譯,而修改前的**執行,否則不會**現在出現可以編譯傳遞的錯誤,例如第二行末尾有更多的“op”, 和“現有1人捐款無產出”),修改建議如圖所示: