不一定
创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为贵定企业提供专业的成都网站设计、做网站,贵定网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
但是C语言的源程序在执行时,固定都是从全局main函数开始,并从全局main函数结束。因此,自定义的函数如果要被执行,必须有一条能够从main函数到这个自定义函数的调用路径。
比如说,你自定义了函数A和函数B,其中函数B在函数A中有调用,但不在全局main函数中调用,那只需要在全局main函数中调用函数A,函数B就会在执行到函数A调用函数B的部分时执行
示例
#includestdio.h
void B(){
printf("我是函数B\n");
}
void A(){
B();
printf("我是函数A\n");
}
main(){
printf("main函数执行开始\n");
A();
printf("main函数执行完毕\n");
}
运行结果:
main函数执行开始
我是函数B
我是函数A
main函数执行完毕
(按任意键)
子函数的变量是在子函数中被定义的。
如果变量不是静态变量,
那么定义的变量会在函数调用的时候,
将其内存空间分配在栈(stack)中。
不调用的时候不会分配空间。
如果变量是静态变量,在编译的时候就会分配内存空间
不大明白你的
“for(i=0;i100;i++)
scanf("%d",b[i]); ”这句话是做什么用的?能解释一下吗?
可以改成这样:
#includestdio.h
void main()
{
void zifushu(char a[]);
char b[100],n;
int i;
printf("请输入一字符串:\n");
gets(b);
zifushu(b);
}
void zifushu(char a[])
{
int j;
j=0;
while (a[j]!='\0'){
j++;}
printf("字符数为:%d\n",j);
}
还有一种更简单的方法给你参考:
#includestdio.h
void main()
{
char n;
int i=0;
printf("请输入一字符串:\n");
while((n=getchar())!='\n') i++;
printf("字符数为:%d\n",i);
}