c语言和c++杂谈
文章平均质量分 77
c语言和c++杂谈
cpp加油站
公众号:cpp加油站,专注分享linux下cpp知识
展开
-
【工欲善其事,必先利其器】之怎么查看c++代码生成的汇编代码
本篇文章讲解怎么得到c++代码对应的汇编代码,想要真正的理解一段代码到底是怎么执行的,还是要从汇编的层面去看,那怎么得到一段c++代码所对应的汇编代码呢,下面为你介绍三种方式。1. gcc编译生成XXX.s文件一般来讲,给你一个cpp文件,比如test.cpp,然后我们编译都是直接g++ test.cpp这样简单直接的方式,但其实它中间有很多个过程的,包含预处理、编译、链接等过程,而这其中的编译这个过程其实就是生成了汇编文件。比如对于一个cpp文件,我们执行下列命令:g++ -E test.cpp原创 2021-07-01 09:32:38 · 367 阅读 · 14 评论 -
上次说了静态数组可变长,今天知道原理了
之前发了一篇文章,讲c99变长数组的,链接如下:多年老c++程序员在静态数组这里翻船了发出去以后有了挺多的反馈,因为这并不是一个很难的知识点,所以如果接触过的自然而然是知道,但还真有挺多人表示不知道和不相信这个事,同时我上次也只是简单的说了一下这个事,没有去讲解这个变长静态数组的实现原理,今天补上。先看一下思维导图:1. 变长数组是长度一直可以变的吗变长数组,那么是长度一直可以变的吗,到底什么时候这个长度会确定下来呢?我们先看一下代码,如下:#include <iostream>原创 2021-06-29 09:17:00 · 607 阅读 · 6 评论 -
多年老c++程序员在静态数组这里翻船了
事情的起因事情是这样子滴,有一次我在代码评审的时候,发现有同事想使用运行时才能够获取到的值,去改变一个静态数组的元素个数,我当时就很诧异,因为我心里知道这样是不可行的,静态数组的元素个数在编译时就需要是固定不变的,一般只能是常量或者宏定义,否则编译就不能通过。但是当时我提出来以后,把原因说了,包括写出这个代码的人和另外一位同事都没理解,弄得我有点怀疑自己了,难道是我搞错了?我左思右想,最后我写了下面的代码来证实一下:#include <iostream>using namespace原创 2021-06-08 09:34:02 · 416 阅读 · 4 评论 -
题解5道c++面试题第一期(含解题思路、答案解析和实现代码)
本篇文章送上5道c/c++面试题目,并附上答案、解题思路以及扩展知识。1. 求下面函数的返回值#include <stdio.h>int func(int x){ int iCnt = 0; while(x) { iCnt++; x = x&(x-1); } return iCnt;}int main(){ printf("cnt = %d\n", func(9999)); return 0;}这题问的是函数的返回值,而通过代码我们能看到返回原创 2021-05-28 09:30:54 · 483 阅读 · 2 评论 -
手写strcpy和memcpy代码实现
本篇文章聊一下strcpy和memcpy的代码实现,这两个也是c和c++面试中常考的问题点。1. 手写strcpy首先看一下,一份标准的strcpy的实现如下:char *strcpy(char* strDest, const char* strSrc){ assert( (strDest != NULL) && (strSrc != NULL)); char *address = strDest; while((*strDest++ = *strSrc++) != '\0')原创 2021-05-26 09:28:53 · 472 阅读 · 0 评论 -
c语言中strstr函数的一个注意点
今天说一个之前工作上遇到过的一个问题,也是之前没注意过的一个点。先看一段代码:#include <stdio.h>#include <string.h>int main(){ char sz1[16] = {0}; char sz2[10] = {0}; char sz3[3] = {0}; strncpy(sz1, "bbAAcc", sizeof(sz1)-1); strcpy(sz3, "AA"); if ( strstr(sz1, sz2) != NU原创 2021-05-11 09:26:10 · 291 阅读 · 0 评论