十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数的返回值顶多是一个数,通过函数直接返回的这个数只有在是指针时才能给出多个数据结果。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的延津网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
可以考虑以下几个方法:
返回指针:
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定义成全局变量,然后子程序和主程序直接用
使用函数参数:
void display(int* shiwa,int* wa,int* qiao,int* bai,int* shi,int ge)
函数中用类似这样的用法计算:(*ge)=Data%10;
void main() { int shiwa,wa,qiao,bai,shi,ge; display(shiwa,wa,qiao,bai,shi,ge) }
用一个足够长的数返回:
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; }
如果函数在正常结束后返回主函数,则不用额外添加任何语句,到函数结束后自动返回主函数;
如果是在函数中间某个分支处需要直接退出函数返回到主函数,则可以添加return;语句行,程序执行到这一语句后,就会立即返回到主函数。当然也可以通过让分支跳转到函数末尾的地方来返回主函数。
你函数里面,用 d= p1; p1 = p2 这是p1指向P2的内存地址,其实地址所在的内存里的值还是原来的一点没变。
可以这么改
int temp = 0;
temp = *p1;
*p1 = *p2;
*p2 = temp;
也可以这样
*p1 = *p1 + *p2;
*p2 = *p1 - *p2;
*p1 = *p1 - *p2;
把想返回值的变量的地址作为参数发送,然后到函数里再对参数赋值就可以了
比如,想改变main函数中a的值
函数定义:
void f(int * pa,....)
{
...
*pa = ....
....
}
调用函数时
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[]={}; 你这句不能通过编译,因为你用了{}, 花括号里没东西,没办法确定[]里的数值是几(初始化错误)。
你可以改成:
static char* parameters[10]; //假定指针数组有10个元素。
注意,你声明的是指针数组,它们没有存放字符串的内存单元,只有存放指向的地址的能力。
所以程序里要提供 存放字符串的地方。如果没有提供,你的输出就是空白。
程序例子:
#include stdio.h
static char* parameters[10];
void f1(){
static char s[ ]="abcd1234"; //存放字符串的地方,函数调用完毕时,单元依然存在
parameters[0]= s;
}
void f2(){
static char s[ ]="xyz5678"; //存放字符串的地方,函数调用完毕时,单元依然存在
parameters[1]=s;
f1(); // 调函数 f1
}
main(){
int i;
f2(); //调函数 f2,f2 调函数f1
for (i=0;i2;i++) printf("%s\n",parameters[i]); // 输出2个字符串
return 0;
}
输出:
abcd1234
xyz5678