C語言中的任何函數(shù)形參都是值傳遞。所謂引用傳遞,不過是指針的值傳遞而已。
成都創(chuàng)新互聯(lián)公司專注于封丘網(wǎng)站建設(shè)服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供封丘營銷型網(wǎng)站建設(shè),封丘網(wǎng)站制作、封丘網(wǎng)頁設(shè)計、封丘網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務,打造封丘網(wǎng)絡公司原創(chuàng)品牌,更為您提供封丘網(wǎng)站排名全網(wǎng)營銷落地服務。
你的函數(shù)做的工作只是交換函數(shù)中的兩個臨時變量a和b的值,結(jié)果不會影響到外部的實參pa和pb。如果想要交換兩個指針的值,你的形參應該為兩個二級指針。
#include stdio.hvoid swaparr(int *a,int m,int *b,int n) { // 僅交換n和m中較小者的元素個數(shù)
int SIZE,tmp;
if(n m) SIZE = m;
else SIZE = n;
for(int i = 0;i SIZE;i++) {
tmp = a[i];
a[i] = b[i];
b[i] = tmp;
}
}void main() {
int a[] = {10,25,32,66,54,89,74,55,12,42};
int b[] = {58,21,35,102,56,97,18,63,85,50};
int i,m,n;
m = sizeof(a)/sizeof(int);
n = sizeof(b)/sizeof(int);
printf("\n交換前的數(shù)組a中的元素為 :\n");
for (i = 0;i m;i++) printf("%5d",a[i]);
printf("\n交換前的數(shù)組b中的元素為 :\n");
for (i = 0;i n;i++) printf("%5d",b[i]);
swaparr(a,m,b,n);
printf("\n交換后的數(shù)組a中的元素為 :\n");
for (i = 0;i m;i++) printf("%5d",a[i]);
printf("\n交換后的數(shù)組b中的元素為 :\n");
for (i = 0;i n;i++) printf("%5d",b[i]);
printf("\n\n");
}
#include stdio.h
#define N 10
void Swap ( int *a, int *b, int n);
int main(void)
{
int *a, *b;
int num1[N], num2[N];
for (a = num1; a num1 + N; a++)
scanf ("%d", a);
for (b = num2; b num2 + N; b++)
scanf ("%d", b);
a = num1;//重新指向首地址
b = num2;//重新指向首地址
Swap (a, b, N);
printf ("*********交換后**********\n");
for (a = num1; a num1 + N; a++)
printf ("%3d", *a);
printf ("\n");
for (b = num2; b num2 + N; b++)
printf ("%3d", *b);
return 0;
}
void Swap (int *a, int *b, int n)
{
int temp;
int i;
for (i = 0; i n; i++)
{
temp = *(a + i);
*(a + i) = *(b + i);
*(b + i) = temp;
}
}
#include?stdio.h
void?swap(char?*a,?char?*b){
int?ch;
while(*a??*b)
ch=*a,*a=*b,*b=ch,a++,b++;
if(*a){
*b++=*a,*a++='\0';
while(*b++=*a++);
}
else?if(*b){
*a++=*b,*b++='\0';
while(*a++=*b++);
}
}