Ⅰ 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);
Ⅱ c語言中數組的使用步驟
定義,賦值,運算。數組必須初始化賦值後,才能使用其中的值進行運算,許多錯誤因為忽略了這一點。
Ⅲ 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語言中怎麼將子函數中的數組和函數調用出來
來傳送子函數中的數組有多種方法——可以通過函數返回值返回地址傳遞數組;也可以通過函數輸入參數來傳遞數組;還可以通過全局變數來傳遞數組。
子函數本身可以直接在作用域中進行調用。
1、通過函數返回值返回地址傳遞數組。
聲明函數時需要聲明函數返回值類型為對應數組的地址,此時可以返回數組的地址,結合數組元素的地址關系可以傳遞整個數組,同時可以根據數組的特性傳遞多個參數。
注意:子函數是C語言模塊化編程思想的核心,其方法是通過輸入介面和輸出介面實現對黑盒的調用,故對其內部數據的輸入和調用也需要通過輸入介面、輸出介面和程序的公共區域實現。
Ⅵ C語言返回的數組如何調用
int a[3]={1,2,3}
int *c = add(a);//調用之後變為{4,5,6}
則*c=4 *(c+1)=5 *(c+2)=6
Ⅶ 用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;//返回得到的整型數組的指針。
}
(7)在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.將結構體聲明為全局變數
2.將改結構體作為參數傳給子函數,這樣子函數就可以使用該結構體了
Ⅸ C語言 數組調用
1.一下程序
main()
{ char s[]="abcde";
s+=2;
printf("%d\n",s[0]);
}
答案:程序出錯
2.一下程序
fun(int x,int y)
{ static int m=0,i=2;
i+=m+1; m=i+x+y;return m;}
main()
{ int j=1,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}
答案:5,11
3.若有定義:char*x="abcdefghi"; ,能正確運用了 strcpy函數的是:
char y[10]; *s; strcpy(s=y+1,x+1);
4.有以下程序執行後W結果是;
int fun1(double a) {return a*a;}
int fun2(double x,double y)
{ double a=0,b=0;
a=fun1(x); b=fun1(y);return(int)(a+b);}
main()
{ double w, w=fun2(1.1,2.0);.......}
答案:5.0
5.設函數的fun定義形式為:void fun(char ch,flaot x) {.....}
則對函數fun的調用語句是: fun(32,32);
6.已有定義char a[]="xyz",b[]={'x','y','z'};,則敘述正確的是:
a數組的長度大於b數組長度
7.一下敘述錯誤的是C)
A.對於double類型數組,不可以直接用數組名進行整體輸入或輸出
B.數組名代表的是數組所佔存儲區的首地址,其值不可改變
C.當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出"下標越界"的出錯信息
D. 可以通過賦值的方式確定數組元素的個數
8.有以下程序:
char fun(char x,char y)
{ if (x<y) return x;
return y; }
main()
{ int a='9',b='8',c='7';
printf("%c\n", fun(fun(a,b),fun(b,c)));
}
答案是:7
9.若定義以下函數:
double myadd(double a,double b)
{ return (a+b);}
並將其放在調用語句之後,則在調用之前應對其說明,正確的說明有:
double myadd(double,double);
double myadd(double b,double a);
double myadd(doubie x,double y);
10有以下程序,執行後輸出的是:
fun( int x, inty)
return(x+y);}
main()
int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);}
答案:8
11.有以下程序結果是
#define P 3
F(int x)
{ return (P*x*x);}
main()
{ printf("%d\n",F(3+5));}
答案:192
Ⅹ 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];即可