c語言數組的調用
⑴ c語言調用數組返回數組怎麼做
#include <stdio.h>
#define MIN(x,y)
int * add_1();
main()
{
int * p = add_1();
int b[5];
for(int i=0;i<5;i++)
{
b[i] = *(p+i);
}
for(i=0;i<5;i++)
{
printf("%d",b[i]);
}
}
int * add_1()
{
int static a[5]={1,2,3,4,5};
return a;
}
(1)c語言數組的調用擴展閱讀:
注意事項
一、該數組不能是返回函數的局部變數數組,因為局部變數數組在退出函數後會被釋放。
可以是全局變數,靜態局部變數,動態分配內存,以及從函數參數傳過來的數組地址。
二、返回指針時,無法返回長度,所以需要其它方式傳回數組長度,以下是幾種常用的方法。
1、約定固定長度。
2、以函數參數返回數組長度。
3、將長度保存在全局變數中。
4、約定數組結束標記。
5、在數組中存儲數組長度,如存在第一個元素中。
有些時候需要子函數將一個數組返回出來,通常是兩種方法,一種是靠指針,另一種是結構體。
例如指針:
#include <stdio.h>
char *test(char *tmp)
{
return tmp;
}
void main(void)
{
printf("%s",test("第一個測試例子 "));
}
⑵ c語言自定義數組並調用
動態內存分配實現
#include<stdio.h>
#include<malloc.h>
intmain(void)
{
int*a,n,i;
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;++i)
{
printf("%d",a[i]);
}
free(a);
return0;
}
或者,如果編譯器支持C99的話,直接定義int a[n];即可
⑶ c語言 函數調用數組
#include<stdio.h>
void max(int a[2])
{
printf("%d",*(a+1));
}
void main()
{
int a[2] = { 10,20 };
max(a);
}
⑷ 用C語言寫了一個輸入一個一維數組的函數,如何在後來寫的函數中調用該數組
在C語言中,無法直接返回一個數組,但是可以通過返回對應類型指針的方式,返回數組。
在大多數情況下,一維數組和一維指針是可以通用的。
比如,定義一個函數,申請一定長度的整型動態數組,其長度用參數傳入,並將結果返回。如出錯,返回空指針NULL。
代碼可以寫成如下形式:
int*int_array_create(int n)//參數n為數組元素個數
{
int*r;
if(n<=0)return NULL;//參數錯誤
r=(int*)malloc(sizeof(int)*n);//申請內存空間,大小為n個int長度。
return r;//返回得到的整型數組的指針。
}
(4)c語言數組的調用擴展閱讀:
return是C++的關鍵字,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值.
說到return,有必要提及主函數的定義,下面是從網路上找到的資料,好好消化吧,對了解主函數中返回值的理解有很大的幫助.
很多人甚至市面上的一些書籍,都使用了void main(),其實這是錯誤的。C/C++中從來沒有定義過void main()。
C++之父Bjarne Stroustrup在他的主頁上的FAQ中明確地寫著The definition void main(){/*...*/}is not and never has been C++,nor has it even been C.(void main()
從來就不存在於C++或者C)。下面我分別說一下C和C++標准中對main函數的定義。
1、C
在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的經典巨著The C programming Language 2e(《C程序設計語言第二版》)用的就是main()。不過在最新的C99標准中,只有以下兩種定義方式是正確的:
int main(void)
int main(int argc,char*argv[])
(參考資料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)
當然,我們也可以做一點小小的改動。例如:char*argv[]可以寫成char**argv;argv和argc可以改成別的變數名(如intval和charval),不過一定要符合變數的命名規則。
如果不需要從命令行中獲取參數,請用int main(void);否則請用int main(int argc,char*argv[])。
main函數的返回值類型必須是int,這樣返回值才能傳遞給程序的激活者(如操作系統)。
如果main函數的最後沒有寫return語句的話,C99規定編譯器要自動在生成的目標文件中(如exe文件)加入return 0;,表示程序正常退出。不過,我還是建議你最好在main函數的最後加上return語句,雖然沒有這個必要,但這是一個好的習慣。
注意,vc6不會在目標文件中加入return 0;,大概是因為vc6是98年的產品,所以才不支持這個特性。現在明白我為什麼建議你最好加上return語句了吧!不過,gcc3.2(Linux下的C編譯器)會在生成的目標文件中加入return 0;。
2、C++
C++98中定義了如下兩種main函數的定義方式:
int main()
int main(int argc,char*argv[])
(參考資料:ISO/IEC 14882(1998-9-01)Programming languages—C++3.6 Start and termination)
int main()等同於C99中的int main(void);int main(int argc,char*argv[])的用法也和C99中定義的一樣。同樣,main函數的返回值類型也必須是int。
如果main函數的末尾沒寫return語句,C++98規定編譯器要自動在生成的目標文件中加入return 0;。同樣,vc6也不支持這個特性,但是g++3.2(Linux下的C++編譯器)支持。
3、關於void main
在C和C++中,不接收任何參數也不返回任何信息的函數原型為「void foo(void);」。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void)。然而這是錯誤的!main函數的返回值應該定義為int類型,C和C++標准中都是這樣規定的。
雖然在一些編譯器中,void main可以通過編譯(如vc6),但並非所有編譯器都支持void main,因為標准中從來沒有定義過void main。
g++3.2中如果main函數的返回值不是int類型,就根本通不過編譯。而gcc3.2則會發出警告。所以,如果你想你的程序擁有很好的可移植性,請一定要用int main。
4、返回值的作用
main函數的返回值用於說明程序的退出狀態。如果返回0,則代表程序正常退出,否則代表程序異常退出。下面我們在winxp環境下做一個小實驗。首先編譯下面的程序:
int main(void)
{
return 0;
}
然後打開附件里的「命令提示符」,在命令行里運行剛才編譯好的可執行文件,然後輸入「echo%ERRORLEVEL%」,回車,就可以看到程序的返回值為0。
假設剛才編譯好的文件是a.exe,如果輸入「a&&dir」,則會列出當前目錄下的文件夾和文件。但是如果改成「return-1」,或者別的非0值,重新編譯後輸入「a&&dir」,則dir不會執行。
因為&&的含義是:如果&&前面的程序正常退出,則繼續執行&&後面的程序,否則不執行。也就是說,利用程序的返回值,我們可以控制要不要執行下一個程序。這就是int main的好處。
如果你有興趣,也可以把main函數的返回值類型改成非int類型(如float),重新編譯後執行「a&&dir」,看看會出現什麼情況,想想為什麼會出現那樣的情況。順便提一下,如果輸入a||dir的話,則表示如果a異常退出,則執行dir。
⑸ 關於c語言中數組作為函數參數的函數之間調用問題
1、新建一個數組作為參數項目,如圖所示:
⑹ C語言數組怎麼調用
有好幾種方法,我稍微說一下,你回去找書看一看:
通過數組首地址 指針 帶下標的指針引用一維數組元素。
引用一維數組中的某一個元素的方法:
* :求當前地址的內容 & :求當前內容的地址
1 a【i】
2 *&a【i】 //*在定義語句時代表定義一個指針變數,當在執行語句部分時代表間址運算符,引用一個指針變數指向的地址的內容。&叫求地址運算符,求當前內容的地址。所以*和&就像乘號和除號一樣,互相抵消了。
3 *(a+i):在數組名的地址上,加上i個存儲單元。代表第(i+1)個元素,用間址運算符引用它,即等價於a[i]
4 當(p=a;||p=&a【0】) 則 *(p+i)等價於a[i]
5 當(p=a;||p=&a[0]) 則 p[i] 等價於 a[i] //方括弧不僅表示數組元素的記方括弧不僅表示數組元素的記方括弧不僅表示數組元素的記方括弧不僅表示數組元素的記號號號號,也是一種運算符也是一種運算符也是一種運算符也是一種運算符.
總結:引用一維數組元素 a[i] 的四種方法: a[i] *(a+i) 若p=a, 則 p[i] *(p+i) 表示a[i]的地址的方法:&a[i] a+i p+i 都表示當前數組第i個元素的地址。
http://wenku..com/view/46092a66783e0912a2162a27.html這是引用的網頁,你可以自己去看看!
⑺ c語言中對數組的調用和對數組名的調用有何不同
數組調用是數組里的數,對名調用是數組的首地址,可以根據這個訪問整個數組里的數
⑻ c語言怎麼調用數組
c語言可以用數組元素的方法或指針的方法調用數組。
int a[100],i;
for(i=0;i<100;i++)
scanf("%d",&a[i]);
for(i=0;i<100;i++)
printf("%d ",a[i]);
也可以:
int a[100],*p;
for(p=a;p<a+100;p++)
scanf("%d",p);
for(p=a;p<a+100;p++)
printf("%d ",*p);