- 1<=x<10只能用(1<=x&&x<10)表示,例如if(1<=x&&x<10)
- 1=>a表示错误,1>=a表示正确。无论大于等于还是小于等于,等号总在右边。
- 在C语言中各种类型数据所占字节数: char 1字节,short int 2字节,float 4字节,double 8字节,long long 8字节,int 2字节(16位)或者4字节(32/64位)
- %12d,前面空11格。
- i++ :先引用后增加 ++i :先增加后引用
- puts(a),按顺序输出完成后会加一个换行符
- 0和1不是素数
- char a[100]; …….. a[i]=a[i]+1;相当于把a[i]变成a[i]下面的一个字符
- gets[],puts[] 只适用于字符数组char
- 如果用指针变量作实参,必须先使指针变量有确定值。
- 不同种类型数据混合运算时,其运算结果会自动取大范围的数据类型做为结果的数据类型,比如:整型和浮点型混合运算的结果是 浮点类型!
- %o,以八进制数形式输出
- 函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。
- 数组名a代表数组首元素的地址,它是一个指针型常量。既然a是常量,所以a++是无法实现的。
- C编译器都是将形参数组名作为指针变量来处理的。如fun(int arr[],int n)与fun(int *arr,int n)是等价的。
- 可以对字符指针变量赋值,但不能对数组名赋值。如下正确:char *a;a=”I love China”;
- 强制类型转换:sum1=(float)sum;l1=(float)l;把括号后面的变量强制转换成括号内的类型。
- 字符串赋值操作不同于单个字符的赋值操作,单个字符赋值:temp=str[i]; 字符串赋值:strcpy(temp,str[i]);
- 字符串比较方法不同于单个字符的比较方法,单个字符比较:If(str[j]<str[i]); 字符串比较:If(strcmp(str[j],str[i])<0);
- c[t++]=s[i]; 即 c[t]=s[i]; t++;
- 带参宏调用时不是值传递,而是以实参代换行参。
- 为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
- 指针变量用来存放地址。
- “&”和“*”两个运算符的优先级别相同,但按自右而左方向结合。
- 数组名代表的是数组首元素地址。
- static的作用:让一个变量长期有效,而不管其是在什么地方被申明。 如:
-
int fun1()
{
static int s_value = 0;
....
}
那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。
-
约瑟夫环:
- 共用体与结构体不同的是,结构体变量中的成员各自占有自己的存储空间,而共用体变量是从同一起始地址开始存放成员的值,即所有成员共享同一段内存单元。
- typedef int INTEGER;那么,INTEGER相当于int的作用。
- ptr->sno等价于(*ptr).sno
- while(scanf(“%d%d”,&a,&b)!=EOF)输入输出一组之后,还可以继续输入下一组,直到从键盘输入Ctrl+Z后回车,结束程序。即为多组输入输出。
- 在换行符可能造成程序错误的情况下,可以使用getchar()来接收换行符。
- D://c//doc//file.dat 以上完整路径放在一起为文件名
- 编译器ID return报错一般都是函数名称有问题(或者程序运行窗口未关闭)(或者编译器需要重启)。
- if(a>b>c),此语句执行方式为:先判断a>b,如果a>b,则a>b代表1,否则代表0,接下来就是进行1>c或者0>c的判断。而不是先判断a>b,再判断b>c (想实现可以用a>b&&b>c)。
- 函数定义时涉及的基本要素是:函数名、形式参数、函数体。
- 多组输入输出:while(scanf(“%d”,&a)!=EOF)和while(~scanf(“%d”,&a))等价。
- func((e1,e2),(e3,e4,e5));该函数有2个实参。
- 共用体变量所占内存长度等于里面所占内存最大的那个变量的长度。
- .操作符的优先级在++(*p).n这个式子中的优先级是最高的,所以会先计算(*p).n的值。
- ->操作符的优先级高于前缀++操作符的优先级,所以在++p->n中会先计算p->n的值。
- 函数的递归调用不过是一个函数直接或间接地调用它自身。
- else和它最近的一个if关联
- 能够编制出功能复杂的程序 不是C语言的特点。
- if(a&&b) 逻辑与的意思,就是说if(a==true && b==true),其中,如果a已经是false,则不再计算b.
- 3&&4 = ture && true = true = 1.
- 在C语言中,二维数组元素在内存中的存放顺序是(按行存放)即在内存中线顺序存放第一行的元素,再存放第二行的元素。
- 不能达到交换指针指向地址而交换输出。函数调用的时候,形参是实参的副本。所以在这里交换的指针值只是实参的副本,原来的指针值并没有改变。
- gets()的多组输入输出:while(gets(str)!=NULL)
- int a[5]={0};数组a元素全部初始化为0.
- 若有定义char s1[]=”well”;char s2[]={’w’,’e’,’l’,’l’}; 则s1和s2是不同的,虽然这两种字符数组初始化方法都是合法的,但两者产生的字符数组是不同的。因为char s1[]=“well”;中“well”是一个字符串,最后还有一个‘\0’,因此s1中总共有5个元素,而s2[]={‘w’,‘e’,‘l’,‘l’};则决定了s2中只有4个元素。
- 标准后缀是.c编译后是.obj连接后是.exe