随笔分类 - C
C语言编程实践
摘要:我学习C语言的时候,遇到的一个问题就是 EOF。 它是 end of file 的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。int c;while ((c = fgetc (fp)) != EOF) { putchar (c);} 很自然地,我就以为,每个文件的结尾处,有一个叫做 EOF 的特殊字符,读取到这个字符,操作系统就认为文件结束了。 但是,后来我发现,EOF 不是特殊字符,而是一个定义在头文件 s
阅读全文
摘要:a+++++b表示什么含义? 自己编译了一下,int main(){ int a = 0; int b = 0; int c = 0; c = a+++++b; printf (" a+++++b The result is %d",c); return 0;}error C2105: “++”需要左值。 网上查了一下,左值就是可以在"="左边,能被赋予值的东西;右值则是在"="右边,可以赋值给别人的东西。所以左值必须是有内存空间的东西;而右值则既可以是变量,也可是常量和某种表达式,只要能提供一个值即可。 为什么a+++++b会编译错
阅读全文
摘要:(*(void(*)())0) (); 在《C陷阱与缺陷》中解释如下: float f,g; //表达式f、g的类型为浮点型 float ff(); //表达式ff()的求值结果为浮点型 float *pf; //表达式*pf是一个浮点数,pf是一个指向浮点数的指针 float *g(), (*h) (); // float *g() == float *(g()), g是一个函数,函数的返回类型为一个指向浮点数的指针,h是一个函数指针,h所指向的函数返回类型为浮点型。 float (*h) (); // 表示h是一个指向返回值为浮点类型的函数的指针。 (float...
阅读全文
摘要:2月初的时候接到一个需求,简单点说就是做个动画。 运用多线程的技术,当动画启动的时候,不影响其他画面的表示和押键响应。 A 线程启动后,在某个阶段启动了B线程。 A这里使用main()函数,B这里使用让动画'动'起来的线程animation,那么可以这么做,直接看代码。#include <stdio.h>#include <windows.h>DWORD WINAPI animation();int main(){ char endFlag = 0; CreateThread( NULL // default security attributes ,0
阅读全文
摘要:一直有个困扰,用变量做数组长度,C不允许。那么,我想做个变化的数组,怎么办呢? 这周做项目时,有人教了一招,可以“变相”地改变C语言中数组的长度。上代码: 新建一个win32 控制台应用程序,添加main.h、main.c main.h中的代码:int array_c [] = {1,2,3,4,5,6}; main.c中代码:#include "main.h"#define ARRAYLENGTH (sizeof(array_c)/sizeof(int))int main() { int i = 0; for (i = 0;i < ARRAYLENGTH;i++)
阅读全文
摘要:一直觉得自己C语言不错,最近在工作中遇到了很多实际的问题,才发现我对C语言的了解还是个门外汉。 藉此,我也做个C语言菜鸟学习系列,就是实际应用中遇到难题的解决方法,方便今后的回顾,菜鸟们可以一起学习一下,有什么不同或者更好的方法,希望不吝赐教。 留此页监督自己,坚持每周一篇,顺便做个目录。 1.C语言数组长度不能改变吗? 2.结构一致的重要性。 3.C语言中多线程的简单例子。
阅读全文
浙公网安备 33010602011771号