前言——这篇文是写给自己备忘的,如果有人从中受益那就更好了。
c语言一般有个主函数 可以是空的,形式为
int main(){
}
这里的问题是主函数的类型 有的编译器(比如vc6)可以用void main的类型,然而dev c++不吃这一套,空类型没有返回值(也有一种说法是返回空值,然而我不理解,空值在二进制代码中怎么表达?要知道代码也是有质量的,电子脉冲不能用天枰衡量难道就真的不存在?空值如果存在,那是什么形式?所以初步否定它)
先来一个最基本的<stdio.h>,内含最基本的输入输出,如c的printf,scanf,如c++的cout,endl。稍稍拓展,还有一个gets函数,无限制读取字符串,直至接受到换行符或eof时停止。一种常用的用法就是与布尔函数中的NULL值搭配使用,而NULL在<stdlib.h>这个库里面。SO。。。。
再来一个预处理宏定义的头文件 #include <stdlib.h>,lib是图书馆(库)的缩写,内含各种有用的工具,待补充。
讲得太分散不好,举个例子,比如我想实现希尔排序的代码,那么首先就是要定义数组,定义的过程中,可以是手动输入数组的个数,这个过程可以用gets()函数判断。然而一般情况下是在输入前提示,因为什么都不知道,什么都没有就按回车的概率很大。
之后就是输入数组个数,这里可以用strlen()来判断,该函数在<string.h>库中,之后的套路同样也是判断,然后输出。
简单例子如下。
#include <stdio.h>
#include <string.h>
int main(){
char d[100];
while (gets(d)!=NULL){
if(strlen(d)>0)
printf("输入不为空\n",&d);
else
printf("输入为空,请再次输入\n");
}
return 0;
}
说说return 0:一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数(换个说法,跳出循环)。return -1::表示返回一个代数值,一般用在子函数结尾。按照程序开发的一般惯例,表示该函数失败。
如果函数有返回值,return关键字还有将返回值传到参数中的意思,专业术语叫做递归,递归和迭代不一样,我之前就搞不清了
迭代就是公式归纳,根据1+1=10推出0+1=01的意思,不常见于代码实现,也可能是我孤陋寡闻。
说了这么多,再补多一个判断的头文件<assert.h>,用法如下
#include <assert.h>
int size = 0; //初始化
scanf("%d", &size); //首先输入数组个数
assert(size > 0); //判断数组个数是否非法
最后补充c的sacnf和printf,之前因为用惯所以觉得简单,但是理解不够深会容易忘记,容易出错。
scanf("%d", &size); 中的%与&是匹配的,%先不管,&是占位符,(粗略理解,意思是一个%被一个&占有,不能多也不能少)
在逗号前要用双引号包起来,在dev c++中默认会用蓝体字填充。
printf就是写要输出的东西,注意变量的类型与格式符的问题(以后补充)