随笔分类 - C语言
C语言学习笔记
摘要:代码地址:https://github.com/sdlwlxf1/tinyEngine 终于实现了自己的软渲染器,图形学的学习暂时告一段落。代码参考知乎上的韦易笑大神的回答,自己加入了很多功能包括: 将原来的Gouraud着色改为phong着色 加入一个平行光和4个点光源,物体材质 背面剔除 利用l
阅读全文
摘要:再次优化快速排序,三数中值取理想的pivot,三向切分忽略与pivot相同的元素,小数组转插入排序(唯一不足递归实现,不过是尾递归,编译器可以优化掉)代码很短,而且可读性很好,记录于此以供参考const int cutoff = 3;void insertSort(int a[], int len)...
阅读全文
摘要:#include #include #include #include int computeSuffixExp(char expression[], size_t len){ std::stack dump; for (int i = 0; i >> *、- >>> +、-void i...
阅读全文
摘要:1、strtok函数函数原型:char * strtok (char *str, const char * delimiters);参数:str,待分割的字符串(c-string);delimiters,分割符字符串。使用方法:该函数用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数d...
阅读全文
摘要:原地址:http://www.cppblog.com/chemz/archive/2007/06/05/25578.html 至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型...
阅读全文
摘要:举例说明char *p, *q;声明p和q字符指针p = "xyz";p的值赋为一个指向由'x'、'y'、'z'和'\0'4个字符组成的数组的起始元素的指针。q = p;p和q现在是两个指向内存中同一个地址的指针。因此我们作如下操作q[1] = 'Y';q和p指向的内存中存储的字符串都是同一个'xYz';
阅读全文
摘要:举几个有代表性的例子比如int *a[2];a与[2]结合,说明a是一个有两个元素的数组,再与*结合,说明数组中两个元素都是指针,最后与int结合,说明指针指向的都是int类型整数。a的类型是int *[2]。int (*b)[2];b与*结合,说明b是一个指针,再与[2]结合,说明该指针指向的是一个有两个元素的数组,最后与int结合,说明该数组的元素都是int类型的整数。b的类型是int (*)[2]。int *g();g先与()结合,说明g是一个函数,然后与*结合,说明g这个函数返回的是一个指针,最后与int结合,说明返回的指针指向的是整形数。g的类型是int *()。int (*h)()
阅读全文
摘要:右图中圆圈代表指针,箭头代表它指向某个元素。定义多维数组int a[3][2];它的逻辑结构可以理解为右图。图中上层数组存储的是3个指向二维数组的指针。所以如果我们做如下操作:int *p;p = a;会出现严重错误原因是:a是指向一个元素为数组的数组,而p是指向一个元素为整形int的数组,这样做强制转换显然是非法的。
阅读全文
摘要:C陷阱与缺陷中关于数组与指针部分做了清晰的讲解,解除了我对于数组的很多困惑。特摘取部分内容以作记录。难点一:定义数组 int a[3];除了a被用作运算符sizeof的参数这一情形,在其他所有的情形中,数组名a都代表指向数组a中下标为0的元素的指针。个人理解为右图的逻辑结构(在实际内存中不一定如此)因此,我们不难得出一个推论,*a即数组中下标为0的元素的引用。例如,我们可以这样写*a= 84;这个语句将数组a中下标为0的元素的值设置为84。同样道理,*(a+1)是数组a中下标为1的元素的引用,依次类推。概而言之,*(a + i)即数组a中下标为i的元素的引用;这种写法是如此常用,因此他被简记为
阅读全文

浙公网安备 33010602011771号