在最上面定义了
static char* parameters[]={};
int main中调用了void parse,parse中调用了int read,read 中调用了 int direction,direction中调用了int reader。在reader得到parameters的值,请问怎么在main中调用。?main中printf的话什么都不显示啊,为什么啊?
C语言自己定义的函数怎么把值传到main中?
答案:2 悬赏:30 手机版
解决时间 2021-02-19 15:30
- 提问者网友:轮囘Li巡影
- 2021-02-18 17:33
最佳答案
- 五星知识达人网友:零点过十分
- 2021-02-18 19:03
static char* parameters[]={}; 你这句不能通过编译,因为你用了{}, 花括号里没东西,没办法确定[]里的数值是几(初始化错误)。
你可以改成:
static char* parameters[10]; //假定指针数组有10个元素。
注意,你声明的是指针数组,它们没有存放字符串的内存单元,只有存放指向的地址的能力。
所以程序里要提供 存放字符串的地方。如果没有提供,你的输出就是空白。
程序例子:
#include
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;i<2;i++) printf("%s\n",parameters[i]); // 输出2个字符串
return 0;
}
输出:
abcd1234
xyz5678
你可以改成:
static char* parameters[10]; //假定指针数组有10个元素。
注意,你声明的是指针数组,它们没有存放字符串的内存单元,只有存放指向的地址的能力。
所以程序里要提供 存放字符串的地方。如果没有提供,你的输出就是空白。
程序例子:
#include
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;i<2;i++) printf("%s\n",parameters[i]); // 输出2个字符串
return 0;
}
输出:
abcd1234
xyz5678
全部回答
- 1楼网友:动情书生
- 2021-02-18 19:46
只要遍历数组
然后将每个元素与要查询的值进行相减
取减得的绝对值最小的那个就是了
下面是一个简单的代码
#include
#include
int find(int *a,int n,int x)
{
int i;
int min=abs(*a-x);
int r=0;
for(i=0;i < n;++i)
{
if(abs(a[i]-x) < min)
{
min=abs(a[i]-x);
r=i;
}
}
return a[r];
}
int main(int argc,char **argv)
{
int a[20];
int i;
for(i=0;i < 20;++i)
{
a[i]=rand()%20;
printf("%d ",a[i]);
}
printf("\n");
printf("与5最接近的数是: %d\n",find(a,20,5));
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯