goto语句:终止程序在某些深度嵌套的结构的处理过程(可以跳转)
创新互联从2013年成立,先为罗湖等服务建站,罗湖等地企业,进行企业商务咨询服务。为罗湖企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。1.代码示例:
#includeint main()
{again:
printf("hello\n");
printf("hello\n");
printf("hihi\n");
goto again;
return 0;
}
程序运行起来后,倒计时60秒关机,如果输入好好学习就可以取消关机。
使用命令行关机
shutdown -s -t 关机
shutdown -a 取消关机
#include#include#includeint main()
{char arr[20] = {0 };
system("shutdown - s - t 60");
again:
printf("请注意,你的电脑将在一分钟内关机,如果输入:好好学习,就取消关机\n");
scanf("%s", arr);
if (strcmp(arr, "好好学习")==0)
{system("shutdown - a");
}
else
{goto again;
}
return 0;
}
C语言strcmp()函数:比较两个字符串。两个字符串相等时返回0.
所以可以写成strcmp(arr, “好好学习”) == 0
(1).函数就是 C 语言的模块,一块一块的,有较强的独立性,可以相互调用,换句话说,C 语言中,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。这就是结构化程序设计,所以面向过程的语言又叫结构化语言。
(2).函数就是一系列 C 语句的集合,能完成某个特定的功能。需要该功能的时候直接调用该函数即可,不用每次都堆叠代码。需要修改该功能时,也只需要修改和维护这一个函数即可。
2.函数的分类
(1).库函数:库函数(Library function)是把函数放到库里,供别人使用的一种方式。一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。
(2).自定义函数:自定义函数是程序员自己声明和定义的,是程序员补充的工具,不管是现成工具的还是补充的工具,都是工具,对使用者来说都一样,没有区别。在C语言中,函数的调用非常灵活,可以独占一行语句,也可以当成常量赋值给变量,也可以当成函数的参数。
(1)strcpy函数:C 库函数char *strcpy(char *dest, const char *src) 把src 所指向的字符串复制到dest(\0也可以拷贝)。 需要注意的是如果目标数组dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。
#include#include#includeint main()
{char str1[] = "Sample string";
char str2[40];
char str3[40];
strcpy(str2, str1);
strcpy(str3, "copy successful");
printf("str1:%s\nstr2:%s\nstr3:%s\n", str1, str2, str3);
return 0;
}
(2)memset函数:memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。其原型是:voidmemset(void_Dst, int _Val, size_t _Size)
_Dst是目标起始地址,_Val是要赋的值,_Size是要赋值的字节数。
#include#includeint main()
{char str[] = "hello world";
memset(str, 'x', 5);
printf("%s\n", str);
return 0;
}
(1).找出两个整数之间的大值
#includeint get_max(int x,int y)
if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = get_max(a, b);//自定义函数
printf("%d\n", m);
return 0;
}
并不是说函数都有返回,有的不用返回可以写成void get_max()
以上get_max就是一个自定义函数
(1).函数的实参:
函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。
实参可以是变量 常量 表达式 函数等;
#includeget_max(int x,int y)
{if (x >y)
return x;
else
return y;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//int m = get_max(a, b);//变量
//int m = get_max(a, 3);//常量
//int m = get_max(a, 2+3);//表达式
int m = get_max(a, get_max(4, 5));//函数
printf("%d\n", m);
return 0;
}
(2).函数的形参:
在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
形式参数当函数调用完之后就自动销毁了
(3):示例:写一个函数可以交换两个整形的变量内容
由图片可知,最后a和b的值并没有交换,这是为什么呢?
a,b是实参;x,y是形参形参是实参的一份临时拷贝,对形参的修改是不会影响实参的
通过调试可以知道,当a,b传参过去给x,y但是x,y的地址和a,b并不相同,所以交换后交换的只是x,y的值对a,b并无影响
所以可以采用指针的方式*
6.函数的调用
(1).传值调用:
传值调用: 函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参
#includevoid Swap1(int x, int y)
{int tmp = x;
x = y;
y = tmp;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a=%d,b=%d\n", a, b);
Swap1(a, b);
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
(2).传址调用:
将实参的地址传递给函数,在函数内对形参进行操作等同于对实参进行相同的操作,在函数调用结束返回后,形参被释放,实参的内容是对形参进行操作后的结果。
#includevoid Swap2(int* pa, int* pb)
{int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a=%d,b=%d\n", a, b);
Swap2(&a, &b);
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
(3).注意
下图这种方式也是一种传值方式,虽然地址传过去是对的但是px,py交换的只是地址,a,b的值并无影响。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧