C語(yǔ)言的變量的作用域是從變量定義開(kāi)始到包含此變量的花括號(hào)結(jié)束。 所以不同函數(shù)的變量不能共享。 可以在函數(shù)外定義全局變量,所有函數(shù)就可以共享全局變量。
創(chuàng)新互聯(lián)公司為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競(jìng)爭(zhēng)力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站, 我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。
可以的,但最好提供長(zhǎng)度參數(shù),并且不要用0判斷是否有效數(shù)字(因?yàn)?本身可能就是有效數(shù)字)
#include stdio.h
#include malloc.h
#include memory.h
int f(int* a,int l,int n,int i) //a:源數(shù)組 l:a有效數(shù)字長(zhǎng)度,n:插入的數(shù)字,i,位置
{
int *b=(int*)malloc(sizeof(int)*(l-i-1)); //臨時(shí)數(shù)組b
memcpy(b,a+i,(l-i-1)*sizeof(int)); //把a(bǔ)[i]開(kāi)始的數(shù)據(jù)復(fù)制到b;
a[i]=n;
memcpy(a+i+1,b,(l-i-1)*sizeof(int));//復(fù)制回來(lái)
free(b);
return 0;
}
int main()
{
int a[9]={1,2,3,4,5};
int i;
f(a,6,8,2); //可以用各種辦法獲得第二個(gè)參數(shù),或者直接就給數(shù)組的總長(zhǎng)度
for(i=0;i6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
兩者的區(qū)別只在于作用域和生存周期。main函數(shù)是一個(gè)進(jìn)程的入口,此外,和別的函數(shù)無(wú)區(qū)別。
1、main函數(shù)里定義的是局部變量,只是在main函數(shù)里有效。
2、如果程序里有多個(gè)函數(shù),定義的全局變量在這些函數(shù)里都可以使用,而在main中定義的只能在main中使用,其他函數(shù)不可以直接調(diào)用。
3、題目中的兩個(gè)程序的區(qū)別只在于程序一的a和s變量是全局變量,程序二的a和s變量是局部變量。
4、全局變量是程序的各個(gè)函數(shù)都可以調(diào)用的,而局部變量只在函數(shù)內(nèi)部有效。
擴(kuò)展資料:
全局變量是編程術(shù)語(yǔ)中的一種,源自于變量之分。
變量分為局部與全局,局部變量又可稱(chēng)之為內(nèi)部變量。由某對(duì)象或某個(gè)函數(shù)所創(chuàng)建的變量通常都是局部變量,只能被內(nèi)部引用,而無(wú)法被其它對(duì)象或函數(shù)引用。
全局變量既可以是某對(duì)象函數(shù)創(chuàng)建,也可以是在本程序任何地方創(chuàng)建。全局變量是可以被本程序所有對(duì)象或函數(shù)引用。
局部變量(Local
variables)指在程序中只在特定過(guò)程或函數(shù)中可以訪問(wèn)的變量。局部變量是相對(duì)于全局變量而言的。在C++、C#、Ruby這些面向?qū)ο笳Z(yǔ)言中,一般只使用局部變量。
面向?qū)ο缶幊淌乾F(xiàn)在普遍采用的是軟件開(kāi)發(fā)方法,因此無(wú)需考慮是局部變量還是全局變量,說(shuō)到變量,往往都是局部變量。
參考資料:百度百科-局部變量
參考資料:百度百科-全局變量