C语言随笔_fopen】的更多相关文章

有同学问我,以下代码会输出“===”,为什么呀? if( (fp = fopen("data.dat","r"))==NULL){ printf("==="); } 我看了下,代码是以“读”的方式打开data.dat文件,可是代码都没有指定data.dat 在哪里,程序找不到这个文件,所以就认为出错了.咋办呢?要么创建data.dat文件,且指定文件的路径:要么就以“写”方式打开文件,则data.dat文件不存,程序也会新建一个data.dat文…
写C程序时,经常发现大家=与==分不清.最常见的写法如下:int a = 3;if(a = 1){.......} 写程序的人原意是想如果a等于1的话,就执行花括号里的语句,a初始化时的值是3,也就是不会执行,但实际呢?却执行了花括号里的语句. 这个也不能怪C程序的初学者,大家学了那么多年的数序,=是等于号早就深入人心,现在C语言告诉你==才是等于号,放谁也一时半会儿接收不了,难道就真没有一个方法能避免此类错误吗?当然不是.我教大家一个联想的办法.数学中,=是等于号,那么在心中告诉自己,“数等”…
函数 C语言中函数参数传递时,将实参的值拷贝到函数参数的存储区中.这种传递参数的方式称为按值传递. 函数不会访问实参本身,访问的是函数存储在栈区的副本,不会改变实参.函数凋用结束,函数在栈区的内容释放. 若要改变实参本身.需用指针传递待修改变量的地址,使函数参数保存该变量地址的值.然后在函数中,通过参数保存的地址间接访问待修改的变量.大部分书籍,将这种做法称为按址传递或按引用传递.实际上,这种传递方式仍然是按值传递,只不过传递的是地址的值. 非void的函数,返回值不能做为左值. 因为函数返回值…
有位同学说,“老师,我运行如下代码,结果报错了” #include <iostream.h>   int main(){ char c,  int b; return 0; } 报错结果是: --------------------Configuration: Test - Win32 Debug-------------------- Compiling... demo.c d:\ccode\test\demo.c(4) : error C2059: syntax error : 'type…
想在printf中,输出多行数据,如果写成下面这样: printf("line 1\n line 2\n line 3\n");编译器会报错“error C2001: newline in constant”. 可以这样写: printf("line 1\ line 2\ line 3\n"); 或者 printf("line 1" "line 2" "line 3\n");…
1. 例子,看实例2-2.这道题有同学会问,那个return有什么用?这么讲吧,return是个英文单词,中文意思是“返回”,用在程序里也是返回的意思,返回啥呢?返回一个值.在func函数中,return将a+b+1这个表达式计算的值拿到,并且返回给main函数中的p,就是这样.所以啊,return这个东东一般都是放在函数的末尾,用来将函数中的某一个值拿到,再给其他变量.…
首先几个基本概念(网上的各种说法都很乱:个人理解整理了一下 内存分类方法很多,动态.静态:  五区:  三段: 内存的区: 1.动态存储区分为 栈区.堆区   也统称为堆栈段1.1栈区(.stack) 编译器自动分配释放,存放函数的参数值,局部变量的值等.函数结束自动释放1.2堆区(.heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收. new或者malloc出来的对象:(不释放导致内存泄漏) 2.静态区域分为 数据段(放数据).代码段(只读) 2.1 全局区(数据段)…
数组: 1:数组名为地址,表达方法: Int A[10]; A;//数组名表示首地址 &A;//数组名加取地址符,仍然表示首地址 &A[0];//第0个元素的地址,即首地址 数组名是指针常量,值不可变,不占用内存空间 2:指针数组(每个元素都是指针 指针数组:double *a[10]; 每个元素占4/8个字节: 3:数组指针:int (*p2)[5]: 指向数组的指针,在多维数组使用,占用内存空间 p2指向 5个int的数组 p2+1:地址增加5个int变量的长度 指向二维数组的每行首地…
指针变量:用于存放另一个变量的地址 (指针变量所占空间大小由操作系统决定32/64位  4/8字节 // 声明且定义:int  *p=&a: 声明.定义:int  *p: p= &a: Double *p =d: (int)(p+1)-(int)p = 8: P指针变量所代表地址 指向 double类型变量,所以p+1,是在double基础上,偏移8个字节地址. 不同类型的指针的区别:就在于+1时偏移量的不同.本质 都是32位或64位二进制变量: 超过1字节地址存放的变量,按照大小端格式在…
内存的分配方式 五个区 :堆区.栈区.全局区.文字常量区.程序代码区 这五个区是ram中的.或者说,堆栈段.数据段.代码段 而rom中,没有堆区和栈区,只有数据段和代码段. ram是在程序运行是的内存 rom是程序烧录的地方 Flash(闪存).EEprom,都是rom Flash容量大,是程序存储器,按照块擦除,用于存储BootLoader和程序代码 E方是数据存储器,容量小,可以一次擦除一个字节(在有些项目中要求字节对齐,有最小擦除单位,例如四个字节) 一般E方大小是1k 几k ram分 静…