随笔分类 - C点滴
1
摘要:c语言中没有类似substr截取子串的函数,可以用strncpy,strncat实现 #include<cstdio> #include<cstring> using namespace std; int main(){ char a[20]="helloworld"; char b[20]="";
阅读全文
摘要:指针变量有3个值,自己的地址,保存的地址和保存地址内的值 #include <cstdio> int main(){ int a=10; int *p=&a; printf("p的地址:%p\n",&p); printf("p保存的地址:%p\n",p); printf("p保存地址内的值:%d\n
阅读全文
摘要:字符指针 char *p,只可接收已知的字符串字面量 字符数组 char a[100],可接收已知或未知的字符串。 原理:字符指针只能存储一个字符类型的地址,而字符串字面量表达式的返回值是:首元素首地址,所以字符指针可以获得该首地址,并且可以通过指针读取该字符串,但不能修改,因为字符串字面量都保存在
阅读全文
摘要:1、https://en.cppreference.com/w/ 2、https://www.geeksforgeeks.org/ 3、https://www.tutorialspoint.com/c_standard_library c语言标准库教程 在windows下使用c++编译器(基于g++
阅读全文
摘要:c字符串功能练习: 获取一行字符串,然后,在这行字符串中搜索是否包含一个小字符串
阅读全文
摘要:c语言标准库没有截取部分字符串的函数,为啥?因为用现有函数strncpy,很容易做到! 输出结果为 123 看到了吗,strcpy函数中的参数是字符串数组的名字,而数组名本质上是指针,那么,src+3 就可以实现将 src中从第4个字符开始复制n个字符给 dest 了 输出结果为 456 注意:比较
阅读全文
摘要:对于任意w位的二进制,进行k位的移动时,真实的位移量为k mod w 32bit的例子 1 << 1 结果2 1 mod 32 => 11 << 32 结果1 32 mod 32 => 01 << 33 结果2 33 mod 32 => 1 但,如果是纯字面量计算,却得出0,看代码: 第一种情况,在
阅读全文
摘要:1、当一个char型指针指向一个字符串字面量(也就是常量字符串)时,该指针必须由const修饰,否则,系统会给出deprecated(不赞成)的警告。原因是:字符串字面量不可改变,当它被一个非const修饰的指针指向时,存在被指针改变的风险。 2、char型指针指向一个字符数组时,没有const限制
阅读全文
摘要:今天看书《C++高级语言程序设计》(徐惠民)的书中关于指针的指针作为函数的参数一节,对指针有了更深层次的感悟,记录。 要点1:解引用符*的作用,把它放在一个地址的左边,可以取得这个地址内存放的值。 要点2:指针就是存放地址的变量,可以简单的理解为:指针就是一个地址。 要点3: int a=10; i
阅读全文
摘要:经常有这样的问题,要求打印如下格式: 进而要求,如果abcde有为0的值,取消打印,假设:a=1,b=0,c=12,d=0,e=5或者,a=0,b=2,c=0,d=10,e=0等等,要求打印: 思路:先找到第一个不为0的,打印出来,然后,将‘,'号放到后面的数的前面,类似",c"这样,完成打印,具体
阅读全文
摘要:结合律指的就是操作符优先级的结合方向的规律,共两种“左到右”,“右到左”,好像很简单的样子,但是,你真的全部了解了吗?你了解的是编译器真正的工作方法吗? 1、左到右的含义:就是左结合,右到左就是:右结合。 2、所谓结合:就是多个东西结合成一个整体,变为一个新的东西。 3、当一个操作符是左结合且为双目
阅读全文
摘要:不知道有人注意没有,virtual的英语含义是:实际的,事实上,实质上。但是在计算机英语内却表示:虚拟的意思。比如:virtual memery 虚拟内存,virtual reality 虚拟现实。 哇,为啥一个单词包含两种相反的含义?剑桥英语词典对virtual的解释是:almost a part
阅读全文
摘要:最近重读c语法,有所感悟,记录。 有时候感悟,其实就是猜,假想,作者创建语言的想法,通俗的讲就是丹尼斯灵魂附体了,这个时候任何c语言难点对于你来说,就像吃饭喝水一样简单了,同时还能发现它优美动人之处。 typedef的作用就是给类型创建一个别名。但类型分2种,1种是基础类型,1种是自定义类型。 1、
阅读全文
摘要:1、man手册可以输出ascii码表 man ascii 2、man手册还可以输出运算符的优先级 man operator
阅读全文
摘要:C99中,设置了stdint.h来定义一组整型数据类型,形如:intN_t和uintN_t对不同的N值指定N位有符号和无符号整数,N的值一般为:8,16,32,64。这样,我们就可以无歧义的声明一个16位无符号变量:uint16_t a 如果要想用printf打印这样声明的变量,可移植的做法是,包含
阅读全文
摘要:带参数的宏替换因各种需求叠加,替换规则很怪异: 1、首先将实参替换形参,并展开宏 2、如果1步展开后,有#或者##,参数会被加上双引号,导致停止替换。 3、如果1步展开后,没有#或者##,且参数也是宏,那么继续替换,知道参数没有宏为止。 4、执行完1-3后,第一轮替换结束,再次扫描宏,如果外层还有宏
阅读全文
摘要:这个问题很好回答,并且我把这个问题归结于基本概念题(就是入门书必须介绍的)。我想一般来说,做过内存管理的,对这个语言特性肯定不会陌生。摘几句The C Programming Language里面讲述这个问题的原话,以说明读书还是必要的:①联合就是一个结构,②它的所有成员相对于基地址的偏移量都为0,
阅读全文
摘要:#include int main(int argc, char *argv[]) { unsigned int umax=~0; if(umax == -1) ...
阅读全文
摘要:目前,计算机存储系统有2种存储格式,大端和小端。数据在内存中存储时以字节为单位,一个int类型有4个字节,这就导致是高字节对应低地址(大端模式),高字节对应高地址(小端模式)。大端和小端模式本身没有对错,也没有优劣,理论上都可以,于是,怎么搞的都有。比如:用大端的C51单片机,用小端的ARM,INT
阅读全文
摘要:根据c标准,char类型到底是有符号整数类型还是无符号整数类型,这取决于c实现,也就是c编译器的作者的想法:( 那么,如何快速的编写一个检测程序,查看当前编译器如何对char进行定义? 我的机子输出: 关键语句: (char)-1>0?"un":"" 含义:将-1强制转换为char类型,如果是无符号
阅读全文
1