1.memcpy、 memmove、memccpy的区别

字符串函数功能查询

memcpy要求源串和目的串不能重叠

memccpy:copy直至遇到由参数指定的ch.

memmove: 源串和目的串可以重叠。

2.strcpy写法

【转载】面试常考题型之strcpy写法

  • 注意检查指针有效性,注:’\0’与NULL一样,是acii码为0的字符,都怪自己以前看别人的代码不求甚解,还妄加评论,到现在才弄清楚这一点,检查字符串的有效性不是用strlen(str)==0来进行的。
  • 注意抛出异常,如果指针无效,抛出异常,throw “invalid pointer”;注意这种throw的方式是c++风格,在c中实现异常处理还需颇费周折
  • 注意封口,也就是注意dest的最后一个字符串为’\0’
  • 注意返回值,以实现链式效果

3.strlen的一些考虑

strlen(NULL)和strlen(“”)有何区别?

作为一个习惯了写c++代码的人,一直很依赖语言提供相应的边界检查,认为理所当然strlen里面会有对字符串为null这种特殊情形的检查,但是发现,其实c语言好多函数都需要注意调用条件,这是一个典型的例子,strlen(NULL);在编译的时候没问题,但是执行期就出错了。而strlen(“”);返回值为0,这是理所当然的。

4.关于sizeof的碎碎念

sizeof使用有两种形式:

  • sizeof(变量类型):必须加括号
  • sizeof(变量)or sizeof 变量,如sizeof int

几种特殊的考虑:

  • sizeof(函数名):gcc返回1,听说vc不支持
  • sizeof(void):gcc返回1,听说vc不支持
  • sizeof(结构类型):需考虑对齐
  • sizeof(string)的值一定是固定的,在普通机器上为4,这就是我在下一条中总结的。关于sizeof(string),今天看那本面试宝典的时候看到这个表达式,有点吃惊,书上写着sizeof(string)=4;当时很纳闷,难道分配4个字节大小的内存给string吗?查阅了相关资料得出结论:string的实现在各库中可能有所不同,但是在同一库中相同一点是,无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。
  • sizeof(数组名):值为所有数组元素大小的和,见我另一篇数组名总结

注意:

  • sizeof 不是函数,可能是个宏
  • sizeof获取的是在栈上需要的空间,堆上申请的空间跟sizeof无关。
  • sizeof是在编译器处理的,所以被sizeof的表达式是不会计算的,如下面输出是4,0,而不是4,3
    nt a = 0;

     

    cout<<sizeof(a=3)<<endl;

     

    cout<<a<<endl;

  • sizeof最强总结

4.string 类型的大小

好吧,这其实是一个c++问题,但是姑且先放入这个专题,请问下面这个程序结果为多少?

#include <string>

#include <iostream>

typedef struct AA

{

    std::string a;

    int *pb;

}A;

 

using namespace std;

int main()

{

    cout<<sizeof(A);

    return 0;

}

C语言基础(不断更新)的更多相关文章

  1. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  2. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  3. Object Pascal 语言基础

    Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...

  4. 2008技术内幕:T-SQL语言基础

    2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...

  5. MySQL学习笔记_8_SQL语言基础复习

    SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...

  6. 20165237 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习与特长 你有什么技能比大多人(超过90%以上)更好? 我的爱好和技能说实话挺广泛的.如果要挑出来一个很擅长的话,我觉得应该是钢琴. 针对这个技能的获取你有什么成功 ...

  7. D01-R语言基础学习

    R语言基础学习——D01 20190410内容纲要: 1.R的下载与安装 2.R包的安装与使用方法 (1)查看已安装的包 (2)查看是否安装过包 (3)安装包 (4)更新包 3.结果的重用 4.R处理 ...

  8. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  9. 【Java初探实例篇01】——Java语言基础

    示例系列,将对每节知识辅以实际代码示例,通过代码实际编写,来深入学习和巩固学习的知识点. IDE:intellij IDEA: 语言:Java 本次示例:Java语言基础知识的应用. 创建包day_4 ...

  10. 【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

随机推荐

  1. (八)ASP.NET自定义用户控件(1)

    http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控 ...

  2. Android 判断用户2G/3G/4G移动数据网络

    Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...

  3. Tomcat配置https及访问http自动跳转至https

    https介绍:   HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

  4. BZOJ 1257 余数之和sum

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1257 题意:计算sigama(m%i)(1<=i<=n). 思路: 这样就简 ...

  5. wget 批量下载目录文件

    wget -r -p -k -np http://源目录     ./本地目标目录

  6. leetcode:Isomorphic Strings

    Isomorphic Strings Given two strings s and t, determine if they are isomorphic. Two strings are isom ...

  7. Innodb物理存储结构系列2 行记录格式

    前一篇讨论了Innodb system,表空间,文件的关系及数据结构,这一篇记录下Innodb行记录的格式. 前提: 1. server层和innodb层都有自己对于record的记录格式,需要进行转 ...

  8. core--作业

    线程被封装在进程中,进程能不能被封装? 当有多个进程协调一起来完成一项任务的时候,就使用"作业"来完成 作业将进程组合在一起,并创建一个"盒子"来限制进程能够做 ...

  9. ionic中登陆逻辑控制

    问题 登陆成功后从login.html调转到home.html,此时在home页面按back键又回到了login.html . 解决方案 登陆成功后,清除导航历史堆栈. 具体代码 menu.html ...

  10. 转:整理一下Entity Framework的查询

    Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更喜欢Func形式). ...