函數(shù)中的形參和調(diào)用時(shí)的實(shí)參都是數(shù)組名時(shí),傳遞方式為(
成都創(chuàng)新互聯(lián)公司是專業(yè)的方山網(wǎng)站建設(shè)公司,方山接單;提供做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行方山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
地址傳遞
)
此時(shí)形參和實(shí)參共用同一段內(nèi)存
都是變量時(shí),傳遞方式為(
值傳遞
)
實(shí)參與形參互不影響
我和你一樣是新手,但是我看了很多也做了很多
全局變量最好是少用,你想啊,你這里定義了一個(gè)全局變量,在這個(gè)函數(shù)中改了一下,另外的一個(gè)函數(shù)中又改了一下,用的少了還行,用的多了呢,你知道最后一次是誰給改的嗎
在說寫對(duì)的話,代碼很難讀
你上面的想法完全正確,可以用,但是那程序太簡(jiǎn)單了,沒多大意義,所以作為練習(xí)是可以的,學(xué)習(xí)的過程和使用的過程差距很大啊,我一個(gè)新手總結(jié)的
呵呵
一起學(xué)習(xí)
1、因?yàn)閿?shù)組在內(nèi)存中是一塊連續(xù)的內(nèi)存,只要將該數(shù)組的首地址傳進(jìn)去,當(dāng)然就可以訪問整個(gè)數(shù)組了。值得注意的是,由于只傳了首地址,函數(shù)不知道數(shù)組的維數(shù),所以還得把數(shù)組的維數(shù)傳進(jìn)去,那就可以完全操作該數(shù)組了。
2、例:有一個(gè)函數(shù)聲明:void fun( int aa[],int size );或者void fun( int *pa,int size );
以上兩種聲明都一樣。
調(diào)用上訴函數(shù)時(shí):假設(shè)有 int ab[10];
fun( ab,10 )就可以了。
舉個(gè)栗子,比如計(jì)算a+b的值的函數(shù)
#includestdio.h
int?plus(int?a,int?b)
{
int?c?=?a+b;//2.此處定義的c無法被主函數(shù)直接調(diào)用,因?yàn)閏為局部變量
return?c;//3.要返回計(jì)算結(jié)果,只能用return語句
}
int?main()
{
int?i=5,j=7;
int?ans?=?plus(i,j);//1.該過程中,首先將i,j作為參數(shù)(與上面的plus函數(shù)說明(m,n)一一對(duì)應(yīng))傳遞給plus函數(shù)。
printf("%d",ans);
}
數(shù)組參數(shù)屬于指針參數(shù).
指針參數(shù)即時(shí)傳址參數(shù)(或叫引用參數(shù)), 如果想在函數(shù)中修改參數(shù)的值, 這是唯一的途徑.
如果把數(shù)組當(dāng)作參數(shù), 不管你愿意與否, 它就是指針, 指向第一個(gè)值的指針.
1. 數(shù)組參數(shù)就是指向第一個(gè)元素的指針: #include stdio.h
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接聲明為指針: #include stdio.h
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形參中指定維數(shù)也不起作用: #include stdio.h
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指針, 其值就有被修改的可能: #include stdio.h
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i si; i++) {
p[i]++;
}
}
5. 如果是字符數(shù)組, 它自己能判斷數(shù)組尾界: #include stdio.h
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}