函數(shù)返回值類型:(void)也就是不需要返回值。
在洛陽(yáng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站建設(shè),洛陽(yáng)網(wǎng)站建設(shè)費(fèi)用合理。
函數(shù)名:abd
函數(shù)參數(shù):int型數(shù)組
這里調(diào)用的時(shí)候,需要給函數(shù)abd一個(gè)參數(shù),可以是數(shù)組名,也可以是一個(gè)指向int數(shù)組的指針。
注意數(shù)組參數(shù)為數(shù)組,是傳址,也就是說(shuō)如果abd函數(shù)對(duì)arr形參操作會(huì)改變外部函數(shù)實(shí)參的值。
C和C++都沒有辦法傳數(shù)組,只能傳“指針”,指針和數(shù)組的差別就在于函數(shù)內(nèi)無(wú)法檢測(cè)數(shù)組的尺寸
數(shù)組只能通過(guò)指針傳遞,不能通過(guò)值傳遞。
數(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]);
}
}
如果你非要用指針的話,可以把數(shù)組的形式改寫成指針的形式,就像一樓的
void Chg_Array(int array[], int size, int value)
{
int i;
for(i=0;isize;i++)
*(array+i)=value ;
}
對(duì)于有數(shù)組參數(shù)的函數(shù),編譯程序要為其開辟相應(yīng)的內(nèi)存空間,而程序中兩個(gè)函數(shù)
都有數(shù)組參數(shù)a[n][m],由于n,m是變量,編譯程序并不知道n,m的具體值,所以不能
通過(guò)編譯。
修改:
1.在#include下面添加以下偽指令:
#define n 5
#define m 5
2.將函數(shù)的參數(shù)形式改為:
int sum(int a[n][m]);
void pl(int a[n][m]);
并按此修改程序文件中所有關(guān)于這兩個(gè)函數(shù)的申明和調(diào)用即可