c语言
萌小宏
情不知所起,一往而深
展开
-
谈谈malloc ()和free()
malloc()和free()的基本概念以及基本用法1. 函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分配的原创 2016-11-28 21:10:04 · 450 阅读 · 0 评论 -
不使用循环,判断一个数是否是2的N次方
对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { printf("yes!\n);原创 2016-12-25 21:42:39 · 4185 阅读 · 1 评论 -
C语言中,malloc和free深入理解
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!转载 2016-11-25 22:04:36 · 371 阅读 · 0 评论 -
数组蛇形矩阵实现
1. 编写一个程序,输出类似的蛇形代码:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9#include #include int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,原创 2016-12-08 13:36:16 · 1738 阅读 · 0 评论 -
计算机大小端判别方法
大端字节序:高字节存放在低地址,低字节存放在高低址 小端字节序:低字节存放在高低址,高字节存放在低地址 大小端字节顺序它是CPU的属性,所哟不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前的CPU是大端还是小端字节序,如果不同则移植需要转移字节序 大端 小端例如 0x1003 78 12 高地址 0x1002 56 34转载 2016-12-06 20:43:02 · 376 阅读 · 0 评论 -
单链表反转/逆序的两种方法
我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1的next域指向结点a3,最后将结点a2的next域指向结点a1,就完成了第一次交换。第一次交换然后进行相同的交换将结点a3移动到结点a2的前面,然后再将结点a4移动到结点a3的前面就完成了反转。第原创 2016-12-05 20:20:20 · 708 阅读 · 0 评论 -
文件管理
要求:创建一个新文件,文件内容为本班所有同学的学号、姓名、操作系统课程成绩,要求采用有格式的存储方式;文件建立后,能对文件进行插入、删除、查找等操作。#include #include #include //#include int NUM = 0;struct student{ char num[20];// 学号 char nam[20];// 姓名原创 2016-12-02 14:59:51 · 466 阅读 · 1 评论 -
使用scanf的注意事项
scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题#include void main() { int a; printf("input转载 2016-12-02 14:52:57 · 575 阅读 · 0 评论 -
8位数据越界处理
直奔主题吧!8位有符号数的取值范围是-128~+127,为什么呢?首先我们知道,计算机以补码的形式存储的,正数的补码是原码不变,负数的补码是原码的取反加1。我们先来看+127,原码0111 1111对吧,若+128是多少呢,0111 1111 + 1 = 1000 0000 (原码),然后存储时,计算机一看是最高位为1,就保持符号位不变,后面7位取反加1,然后呢,进位舍弃,还是1000原创 2016-11-29 20:15:33 · 1859 阅读 · 0 评论 -
c语言基础面试题
1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++转载 2016-11-01 20:01:38 · 1612 阅读 · 0 评论 -
register关键字
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU的寄存器也就那么几个或几十个,你要是定义了很多很多register变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。一、皇帝身边的小太监----寄存器 不知道什么是寄存器?那见过太监没有?没有?其实我也没有。没见过不原创 2017-02-09 09:59:41 · 331 阅读 · 0 评论