函數(shù)的返回值頂多是一個數(shù),通過函數(shù)直接返回的這個數(shù)只有在是指針時才能給出多個數(shù)據(jù)結(jié)果。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的延津網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
可以考慮以下幾個方法:
返回指針:
int*?display() {?int *p;?p=malloc(sizeof(int)*6); ... return p;?} //用p[0]~p[5]計算各位
void main() {?int?*p; p=display(); ... free(p);?}
使用全局變量:將shiwa,wa,qiao,bai,shi,ge定義成全局變量,然后子程序和主程序直接用
使用函數(shù)參數(shù):
void display(int* shiwa,int* wa,int* qiao,int* bai,int* shi,int ge)
函數(shù)中用類似這樣的用法計算:(*ge)=Data%10;
void main() {?int shiwa,wa,qiao,bai,shi,ge; display(shiwa,wa,qiao,bai,shi,ge)?}
用一個足夠長的數(shù)返回:
long display() {?long n;?... n=shiwa; n*=10; n+=wa; n*=10; n+=qiao; n*=10; n+=bai; n*=10; n+=shi; n*=10; n+=ge; return n;?}
void main() {?int wa; long n; n=display(); wa=n/10000; wa%=10;?}
如果函數(shù)在正常結(jié)束后返回主函數(shù),則不用額外添加任何語句,到函數(shù)結(jié)束后自動返回主函數(shù);
如果是在函數(shù)中間某個分支處需要直接退出函數(shù)返回到主函數(shù),則可以添加return;語句行,程序執(zhí)行到這一語句后,就會立即返回到主函數(shù)。當(dāng)然也可以通過讓分支跳轉(zhuǎn)到函數(shù)末尾的地方來返回主函數(shù)。
你函數(shù)里面,用 d= p1; p1 = p2 這是p1指向P2的內(nèi)存地址,其實地址所在的內(nèi)存里的值還是原來的一點沒變。
可以這么改
int temp = 0;
temp = *p1;
*p1 = *p2;
*p2 = temp;
也可以這樣
*p1 = *p1 + *p2;
*p2 = *p1 - *p2;
*p1 = *p1 - *p2;
把想返回值的變量的地址作為參數(shù)發(fā)送,然后到函數(shù)里再對參數(shù)賦值就可以了
比如,想改變main函數(shù)中a的值
函數(shù)定義:
void f(int * pa,....)
{
...
*pa = ....
....
}
調(diào)用函數(shù)時
f(a,...)
這樣就可以“返回”多個值了,只不過無法用return語句返回
定義三個變量。#includestdio.h
int main(void)
{
int a=3;
int b=5;
int c=0;
c=a;
a=b;
b=c;
printf("a=%d,b=%d",a,b);
getchar();
return 0;}
static char* parameters[]={}; 你這句不能通過編譯,因為你用了{}, 花括號里沒東西,沒辦法確定[]里的數(shù)值是幾(初始化錯誤)。
你可以改成:
static char* parameters[10]; //假定指針數(shù)組有10個元素。
注意,你聲明的是指針數(shù)組,它們沒有存放字符串的內(nèi)存單元,只有存放指向的地址的能力。
所以程序里要提供 存放字符串的地方。如果沒有提供,你的輸出就是空白。
程序例子:
#include stdio.h
static char* parameters[10];
void f1(){
static char s[ ]="abcd1234"; //存放字符串的地方,函數(shù)調(diào)用完畢時,單元依然存在
parameters[0]= s;
}
void f2(){
static char s[ ]="xyz5678"; //存放字符串的地方,函數(shù)調(diào)用完畢時,單元依然存在
parameters[1]=s;
f1(); // 調(diào)函數(shù) f1
}
main(){
int i;
f2(); //調(diào)函數(shù) f2,f2 調(diào)函數(shù)f1
for (i=0;i2;i++) printf("%s\n",parameters[i]); // 輸出2個字符串
return 0;
}
輸出:
abcd1234
xyz5678
文章標(biāo)題:c語言函數(shù)賦值到主程序 C語言函數(shù)賦值
鏈接URL:http://www.chinadenli.net/article12/doogsgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、電子商務(wù)、網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)