我需要輸入兩個一維陣列 Array1 和 Array2。并希望他們使用指標交換元素。我正在使用帶有指標的臨時變數方法。這就是我一直在做的事情:
#include <stdio.h>
int main()
{
int a[100],b[100],*temp;
int n,i;
int *p=a;
int *q=b;
printf("Enter size of array1&2:");
scanf("%d",&n);
printf("Enter array1&2 elements:");
for(i=0;i<n;i ){
printf("Enter array1 element [%d]:",i);
scanf("%d",p i);
printf("Enter array2 element [%d]:",i);
scanf("%d",q i);
*temp=*(p i);
*(p i)=*(q i);
*(q i)=*temp;
}
printf("Array1 elements: ");
for (i=0;i<n;i ){
printf("%d/n",*p i);
}
printf("Array2 elements: ");
for (i=0;i<n;i ){
printf("%d\n",*q i);
}
}
但是在為每個陣列輸入 1 個值后,輸出崩潰。我在哪里搞砸了?
uj5u.com熱心網友回復:
將變數宣告temp為具有型別int而不是int *.
int a[100],b[100],temp;
然后寫
temp = *(p i);
*(p i) = *(q i);
*(q i) = temp;
否則,您將嘗試temp使用呼叫未定義行為的不確定值取消參考未初始化的指標。
同樣在您的呼叫中,printf您錯誤地使用了指標演算法。
例如,而不是
printf("%d/n",*p i);
寫
printf("%d/n",*( p i ));
否則,您將輸出陣列第一個元素的值加上i.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/530134.html
標籤:C指针打印交换指针算术
上一篇:如果函式已經有指向需要洗掉的節點的指標,我將如何調整鏈表的大小?
下一篇:洗掉C中鏈表中的相鄰重復項
