或者通過參數傳進去,如
專注于為中小企業(yè)提供網站設計制作、成都網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)前鋒免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。
void Init(stu_handlertus *hdl)
{
hdl-count = 1;
for(i = 0; i 50; ++i)
{
hdl-rtus[i].rtuindex = 0
hdl-rtus[i].a = 0;
hdl-rtus[i].b = 0;
hdl-rtus[i].c = 0;
}
}
調用
Init( handlertus);
即可。
不過結構:
struct stu_handlertus
{
int count;
struct stu_handlertus rtus[50];
}handlertus;
是錯誤的,原因是這一句
struct stu_handlertus rtus[50];
這樣就不知道結構stu_handlertus的大小了。所以上面改為
struct stu_handlertu rtus[50];
兩個結構名字這么接近,是一個不好的風格。
1、通過函數的參數顯示傳遞:
a(int
a)
{
a
=
a+2;
}
b(void)
{
int
b
=
3;
a(b);
}
在函數a中a作為一個參數傳入函數中進行運算,那么a就可以算作是a的輸入,然后在程序內部a進行了運算后值變了,那么運算后的a又算作是a函數的輸出。
2、通過全局變量隱式傳遞:
全局變量你應該知道吧,簡單點說就是作用域涵蓋整個程序的變量(當然要看具體情況)。
假設a為int型全局變量,初始值為1:int
a
=
1;
a()
{
a
=
a
+
2;
}
b()
{
a
=
a
+
3;
}
main()
{
a();
b();
a();
}
通過main函數我們可以看到,程序首先執(zhí)行的是函數a,那么執(zhí)行完函數a后全局變量a的值由初始值1變成了3,然后又繼續(xù)執(zhí)行函數b,注意此時函數b也是對a進行運算,那么此時全局變量a成了b的輸入,運算后a的值為了6,此時a為b的輸出。那么也就是說全局變量a在經過a函數的改變后作為一個輸入隱式的傳入了b函數,然后經過b函數的運算又算作是b的輸出。執(zhí)行過b函數后程序又遇到了a函數,那么此時經過b函數運算的a又作為a函數的一個輸入了。
通過C語言撰寫程序,最經典的函數是static。
在C語言中,static的作用有三條:一是隱藏功能,二是保持持久性功能,三是默認初始化為0。
在C語言中,static的字面意思很容易把我們導入歧途,其實它的作用有三條,分別是:一是隱藏功能,對于static修飾的函數和全局變量而言。二是保持持久性功能,對于static修飾的局部變量而言。三是因為存放在靜態(tài)區(qū),全局和局部的static修飾的變量,都默認初始化為0。
如果加了static,就會對其它源文件隱藏。例如在a和msg的定義前加上static,main.c就看不到它們了。利用這一特性可以在不同的文件中定義同名函數和同名變量,而不必擔心命名沖突。
Static可以用作函數和變量的前綴,對于函數來講,static的作用僅限于隱藏。
void InitStack(SqStack *S)
{
int i;
for(i=0;iN;i++)
S-base[i]=0;
S-top=0;
}
C中函數參數是按值傳遞,你那樣寫修改的是復制的副本,本身沒有修改,傳遞指針,間接修改。
其他的函數也一樣,都需要傳遞指針。
可以這樣調用。
int b=0指的是默認參數,調用時傳入或不傳入b都行,如果不傳入b的話,那么b的值就是0。
另外注意只有最后面的參數可以是默認參數。
#includeiostream
#includestring
using std::cout;
using std::string;
class A{
string a;
public:
A(string ab="1wggg"){a=ab;}
string geta(){return a;}
};
void main()
{
A b;
coutb.geta();
}