1.memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。可以拿它拷贝任何数据类型的对象。

举例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。

2.malloc()和calloc()

函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。

malloc()函数有一个参数,即要分配的内存空间的大小:

void *malloc(size_t size);

calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。

void *calloc(size_t numElements,size_t sizeOfElement);

如果调用成功,函数malloc()和函数calloc()都将返回所分配的内存空间的首地址。

函数malloc()和函数calloc()的主要区别是前者不能初始化所分配的内存空间,而后者能。如果由malloc()函数分配的内存空间原来没有被使用过,则其中的每一位可能都是0;反之,如果这部分内存曾经被分配过,则其中可能遗留有各种各样的数据。也就是说,使用malloc()函数的程序开始时(内存空间还没有被重新分配)能正常进行,但经过一段时间(内存空间还已经被重新分配)可能会出现问题。

函数calloc()会将所分配的内存空间中的每一位都初始化为零,也就是说,如果你是为字符类型或整数类型的元素分配内存,那麽这些元素将保证会被初始化为0;如果你是为指针类型的元素分配内存,那麽这些元素通常会被初始化为空指针;如果你为实型数据分配内存,则这些元素会被初始化为浮点型的零。

3.fread()
  功 能: 从一个流中读数据
  函数原型: int fread(void *ptr, int size, int nitems, FILE *stream);
  参 数:用于接收数据的地址(指针)(ptr)
  单个元素的大小(size) :单位是字节而不是位,例如读取一个整数值就是4
  元素个数(nitems)
  提供数据的文件指针(stream)
  返回值:成功读取的元素个数

  完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * stream)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出。

4.fflush(stdout)

  在printf()后使用fflush(stdout)的作用是立刻将要输出的内容输出。
  当使用printf()函数后,系统将内容存入输出缓冲区,等到时间片轮转到系统的输出程序时,将其输出。
  使用fflush(out)后,立刻清空输出缓冲区,并把缓冲区内容输出。
  例如:
  for (ctr = 1; ctr <= wait; ctr++)
  {
    printf("."); /* print a dot */
    fflush(stdout); /* force dot to print on buffered machines */
    sleep((int) 1); /* pause 1 second */
  }

  用fflush(stdout)能使机器每输出一个.暂停一秒钟,而不会出现乱序(例如:PP。。。PP。PPP。。。等)现象。

5.define

  #define A(x) T_##x
  #define B(x) #@x
  #define C(x) #x

  假设:x=1,则有:

  A(1)------〉T_1
  B(1)------〉'1'
  C(1)------〉"1"

6.assert()

  assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
  #include <assert.h>
  void assert( int expression );

  assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。

7.static关键字

  在C语言中,static的作用有三条。
(1) 隐藏。
  当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
(2) 保持变量内容的持久。

  存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。

(3) 默认初始化为0。

  其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。

  最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

转载于:https://www.cnblogs.com/yucan/archive/2010/12/20/1911675.html

关于C语言的一些小知识点相关推荐

  1. C语言的这个小知识点,竟然连开发多年的老司机都了解的不完全

    printf()和scanf()是 C语言中最"多才多艺"的 I.O函数 它使用的转换说明和转义字符 能使程序员恰到好处的控制 想要输入和输出的信息 但这也提高了使用它的难度 今天 ...

  2. C语言 嵌入式 面试小知识点(一)

    sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数. 与strlen的区别: 一.sizeof 是运算符,确切的说是一个编译时运算符,参 ...

  3. C语言小知识点练习总结

    最近在准备C语言的上级考试,之前对C接触不多,在练习过程中把一些小知识点记录下来. 1.字符串的截取 利用strncpy函数,传入三个参数,分别为目标字符串,起始位置,长度. 例如将日期字符串转化为数 ...

  4. 【fpga里Verilog语言的小知识点】

    提示:小白撰写,如有错误希望指出 目录 前言 总结 前言 记录一下学习fpga里Verilog语言的小知识点,持续更新. 提示:以下是本篇文章正文内容 1.A = B ? C : D 是一个条件运算符 ...

  5. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  6. Python之——遇到的小知识点总结

    学习过程中,难免会遇到一些冷门的小知识点,熟悉这些小知识可以在工作中达到事半功倍的效果,尽力消除自己的知识盲区.总之当时的自己花了不少功夫去解决这些问题,因此觉得有必要单独记录下来,以后也许会再遇到, ...

  7. 记录平时发现的一些小知识点

    好记性不如烂笔头,写字太麻烦就在这里记录一些平时看到的零散的小知识点 1.c语言函数指针数组必须有相同的输入.输出值,函数指针数组可如下定义: void (*fun[256])(void); fun[ ...

  8. c++的一些小知识点

    自己总结的一些小知识点,希望能够对大家有帮助. bool:1 char:1 wchar_t:2 char16_t:2 char32_t:4 short:2 int:4 long:4 long long ...

  9. LeetCode刷题遇到的小知识点总结

    文章目录 1. 需要判断输入的两个参数的大小/长度 2. 数学分式的化简 3. 二叉树操作的小总结 4. MySQL分组内取前几名的问题 5. SQL中的小问题 6. 对哈希表的初步理解 (1)初步理 ...

最新文章

  1. 【学习笔记】线性代数全家桶(在编程竞赛中的应用)
  2. php 读写文件 file_put_contents() 与 file_get_contents() 函数用法
  3. mysql同步 触发器_mysql 触发器(数据库的同步)
  4. 运用@media实现网页自适应中的几个关键分辨率
  5. C++静态成员和静态成员函数
  6. shopex证书无法安装解决方法探讨
  7. 轻松获取LAMP环境的配置参数
  8. oracle客户端 tsnping时出现TNS-03505:无法解析名称
  9. 如何判断模糊图像_深圳企业宣传片拍摄制作教你如何使用手动聚焦
  10. matlab工具箱有哪些函数,matlab工具箱函数汇总(上)
  11. 12.51单片机实现电子音乐盒
  12. 菠萝派php示例,简易菠萝派 - 美食杰 - 美食,菜谱 - 中国最全的家常菜谱美食网...
  13. halcon 灰度投影
  14. 六级考研单词之路-五十四
  15. 海致大数据京信_海致网聚提出公安大数据背景下的个人计算新理念
  16. 解决ImportError: cannot import name ‘bbox_overlaps_cython‘
  17. 插入u盘有图标但计算机没盘,电脑没插u盘却有u盘图标显示如何解决
  18. Joint Discriminative and Generative Learning for Person Re-identification
  19. Spring Cloud微服务系统架构的一些简单介绍和使用
  20. 什么是分布式微服务架构?三分钟彻底弄懂什么是分布式和微服务

热门文章

  1. ViewController类中得方法和属性的用途
  2. 学习selenium所须要具备的技术
  3. 基于P2P协议通信模式的选型(一)
  4. C#2.0 从sql server 中读取二进制图片
  5. Java selenium操作下拉滚动条的几种方法
  6. html5网页动画总结--jQuery旋转插件jqueryrotate
  7. ViewPager实现页面切换
  8. C# 复制 粘贴 剪切 撤销
  9. nmap常用的扫描命令
  10. PostMessage与SendMessage