今天的重點(diǎn)利用指針進(jìn)行子函數(shù)與主函數(shù)之間形參與實(shí)參的傳遞,通過指針讓子函數(shù)作用在主函數(shù)變量上。老師用一個形象的例子講述了他們之間的關(guān)系。主函數(shù)開辟了一個變量空間(例如在主函數(shù)中定義了一個變量a),子函數(shù)也開辟了自己獨(dú)立的內(nèi)存空間(例如定義了一個變量c)。各自只能打開各自的內(nèi)存空間的門。每個人都有自己的一把鑰匙,不能交叉查看。
1.子函數(shù)形參與主函數(shù)實(shí)參變量都有獨(dú)立的存儲空間,之間獨(dú)立。且各自變量只在各自作用范圍內(nèi)起作用。例如在主函數(shù)中的變量a,b賦值給子函數(shù)的形參c,d。每個變量都有各自獨(dú)立的存儲空間。且子函數(shù)的存儲在調(diào)用結(jié)束后,存儲空間釋放。c,d值消失。原則上函數(shù)是通過return值把數(shù)據(jù)傳遞回給主函數(shù)。
2.特殊之處就是指針。特殊之處是可以開創(chuàng)一個公用空間。主函數(shù)通過直接訪問變量的方式查看公用空間,而子函數(shù)通過指針可用在子函數(shù)中查看公用空間并且可以操作。需要注意的是,這種公用空間一定要在主函數(shù)中建立。
下面自己寫的利用指針做為形參的冒泡子函數(shù)
#include<stdio.h>
void bubb(int *a,int num)
{for(int i=0;ia[j+1])
{int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;}}
}
int main()
{
int b[5]={
9,56,8,4,7
};
bubb(b,5);
for(int i=0;i<=4;i++)
printf("%d ",b[i]);
}