三种循环比较
while, do-while和for三种循环在具体的使用场合上是有区别的,如下:
在知道循环次数的情况下更适合使用for循环;
在不知道循环次数的情况下适合使用while或者do-while循环:
如果有可能一次都不循环应考虑使用while循环
如果至少循环一次应考虑使用do-while循环。
但是从本质上讲,while,do-while和for循环之间是可以相互转换的。
realloc()函数的作用/目的是什么
realloc()函数用于调整分配的内存块的大小。 它有两个参数,第一个是指向先前分配的内存的指针,第二个是新请求的大小。
realloc()函数首先释放旧对象,然后重新分配新指定的大小。 如果新大小小于旧大小,则新分配内存的内容将与先前相同,但如果新创建的对象中的任何字节超出旧大小,则超出大小的值将是不确定的。
语法:
void*realloc(void*ptr, size_t size);C
示例代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){char*pcBuffer =NULL;/* Initial memory allocation */
pcBuffer =malloc(8);if(pcBuffer ==NULL){return0;}strcpy(pcBuffer,"yii");printf("\npcBuffer = %s\n", pcBuffer);/* Reallocating memory */
pcBuffer =realloc(pcBuffer,15);strcat(pcBuffer,"bai.com");printf("pcBuffer = %s\n", pcBuffer);//free the allocated memoryfree(pcBuffer);return0;}C
输出结果为:
pcBuffer = yii
pcBuffer = yiibai.com
Shell
注意:它应该用于动态分配的内存,但如果指针是空指针,realloc 的行为类似于 malloc 函数。
函数
(1)一个源程序由多个函数组成。
(2)C程序的执行从main()函数开始;
(3)所有函数都是平行的;
(4)函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。
函数定义的一般形式:
(1)类型标志符 函数名()
{
声明部分
语句
}
(2)类型标志符 函数名(形式参数列表)
{
声明部分
语句
}
多重循环
多重循环就是在循环结构的循环体中又出现循环结构。
在实际开发中一般最多用到三层重循环。
因为循环层数越多,运行时间越长,程序越复杂,所以一般用2-3层多重循环就可以了。另外不同循环之间也是可以嵌套的。
多重循环在执行的过程中,外层循环为父循环,内层循环为子循环,
**父循环一次,子循环需要全部执行完,直到跳出循环。**父循环再进入下一次,子循环继续执行…
malloc(0)的返回值是多少
如果请求空间的大小为零,则行为将由实现定义。 malloc 的返回值可能是一个空指针,或者它表明该大小的行为是某个非零值。 标准建议不要使用指针来访问当大小为零时由 malloc 返回的对象。
关于形参和实参的说明
(1) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存。
(2) 实参可以是常量、变量或者表达式;有时传递的时地址;
(3) 在被定义中,形参必须指定类型;
(4) 实参与形参的类型应相同或赋值兼容;
(5) C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。
break语句
那么循环5次的时候,需要中断不继续训练。在C语言中,可以使用break语句进行该操作.
使用break语句时注意以下几点:
在没有循环结构的情况下,break不能用在单独的if-else语句中。
在多层循环中,一个break语句只跳出当前循环。