一、程序设计基本概念
1.printf操作顺序是从右向左,计算参数时,从右向左压入堆栈。
2.条件判断“A” == a 优于 a == “A”,因为会进行类型判断,万一错写== 为 = ,C++是不允许对常量赋值的。
3.关于运算符方面的问题,不想去管,游戏是一个偏软的东西。
4.a,b两个数,在不使用ifswitch等条件判断语句中,如何找到最大。
思想是采用数学平均数,绝对值。
5.a,b交换,不使用中间变量。
a = a + b;
b = a - b;
a = a - b;
问题是 a + b可能会越界
所以采用这个
a = a ^ b;
b = a ^b;
a = a ^ b;
6.C 与C++的问题,在调用C编译后的函数,要加extern C,因为C++有重载,函数会被编译成这样fun_int_int而C不会。所以通过这个来进行连接,解决名字匹配的问题。
7.C与C++的区别
C是一门结构化的语言,C语言优先考虑的是算法和结构。程序考虑如何通过输入一个数据,通过一个过程,进行事物控制或者获得输出结果。
而C++则是一门面对对象的语言,考虑的是如何构造一个对象模型,将需要解决的问题,用模型模拟出来,然后进行解决。
8.移除程序中的注释。没有进行仔细的考虑,思维过程应该是将大致步骤考虑清楚,然后在仔细考虑注意事项,意外的事项。思维首先是考察要处理的问题的情况,将情况进行了解,比如说分多少种类型,有什么问题,注意到不同的事件。然后针对各种类型问题提出解决方案,重点关注意外情况的处理。
9.预处理、const、sizeof
宏定义上在后面添加类型,比如说(一个数)UL,数的类型为UL。
const添加在函数后面,表示恒态函数,如func() const。
const与宏定义的区别
第一、宏定义没有类型,而const有类型。
第二、在调试过程中,无法对宏定义进行调试,但可以对const调试,基本C++里面不使用宏定义。
const在C++中和C中存在不同
首先,在C进行编译的时候,编译器是不能把const当作编译期间的常量的,所以以下写法有问题
const buff = 100;
char array[buff];
buff未定义。
而const buff;在C中可行,当作一个声明,而在C++中则不行,因为C默认const是外部连接,可以在别处进行定义。而C++则是内部连接,必须采用extern进行外部连接。
注意sizeof与strlen的区别,sizeof侧重的是内存,而strlen是字符长度。
10.指针与引用
指针与引用的区别在于:指针可为空,而引用不能为空。指针可以改变,而引用无法改变,
在函数中申明一个指针,如果指针赋值为一个另一个指针指向的内容,容易造成内存泄露。因为申明了指针但是没有分配内存。*a = *b。
char *a[] = "hello world";定义的是一个局部变量。
char *a = "hello world";定义的是一个全局数组。
数组中,[]中为十六进制等等数据,一般需要除以数组的类型内存大小。
指针是无法被直接赋予一个地址的,这在C++中不允许。例如,int *b = (int *)0xfff;