随笔分类 - c/c++ study
摘要:现在我们要实现这样一个程序片段(伪代码):array1={e11,e12,e13,...};array2={e21,e22,e23,...};array3={e31,e32,e33,...};.......arrayn={en1,en2,en3,...};if elem ∈ array1 exp1;else if elem∈ array2 exp2;......else if elem∈ arrayn expn;每个判断都是在一个数组中寻找某个元素是否存在,该如何实现呢?将elem与数组的每个元素依次比较,比较表达式之间用或连接起来,这是一个办法。但这个方法在数组元素较多时会使条件表达式变得.
阅读全文
摘要:堆和栈的区别(转贴)堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串就是放
阅读全文
摘要:如果struct类型的声明放在函数体内,比如下面这个程序:#include<stdio.h>#define N 5int main(){ struct Student *input(struct Student *p); struct Student { int num; char name[10]; float score[3]; }; struct Student stu[N],*s=stu; s=input(stu); return 0;}struct Student *input(struct Student *p){}编译时在引用input函数行出现错误...
阅读全文
摘要:#include<stdio.h>struct Student{ long number; char name[20]; float score; char aver;};int main(){ struct Student s; scanf("%ld %s %f %c",&s.number,s.name,&s.score,&s.aver); printf("%-10ld%-10s%-5.1f%-3c\n",s.number,s.name,s.score,s.aver); return 0;}这个程序能正常输入输出但如
阅读全文
摘要:#include<stdio.h>int main(){ void swap(int x,int y); void swap2(char s[]); int a=5,b=7; char w[]="ab"; printf("a=%d,b=%d\n",a,b); swap(a,b); printf("swap:a=%d,b=%d\n",a,b); printf("w=%s\n",w); swap2(w); printf("swap:w=%s\n",w); return 0;}void s
阅读全文
摘要:在MS VS2010上用scanf函数读入一个double数据,代码如下#include<stdio.h>int main(){ double n; scanf("%f",&n); printf("sum=%f\n",n); return 0;}输入2,发现返回的是一个很小的负数,百思不得其解,后来发现是格式控制的问题,只要把格式控制符变成%lf就正常了。再试了一下float类型的数据,如果格式控制符用%lf同样会报错。因此,结论是scanf函数的格式控制符必须和数据类型匹配,%lf对应double类型,%f对应float类型。
阅读全文
浙公网安备 33010602011771号