c
文章平均质量分 94
想飞的IT猪
这个作者很懒,什么都没留下…
展开
-
关于条件判断语句if的括号里能否是字符串
string s=“shop”;if(s),此时是会编译出错的,因为if的括号里只能是bool值,或者可以转换为bool的值。if(s.c_str())此时返回的是指针,是指向s串的缓冲区的指针。那么此时这个此时就是以这个指针所表示的地址来判断的string s=“123”;if(atoi(s.c_str()),这个是将c_str指向的s的缓冲区存储的数字组成的串转换为真实的数字。...原创 2020-10-14 15:29:38 · 1944 阅读 · 0 评论 -
Error on Xcode "No matching function for call to 'max'"
这个的错误一般是因为max的参数是需要两个都是相同类型的,max()requires that the first and second arguments are of the same type原创 2020-03-23 09:00:22 · 1984 阅读 · 2 评论 -
16进制和二进制占满32位分别需要多少字符
首先先要明确计算机是以二进制来进行计算的,下面的位是所以计算的系统32位(bit位),则二进制占满32位,也是需要32位的而16进制,是满16进1,而二进制是满2进1,则说明16进制的一个位置是需要二进制的4位才能占满的(16=2^4),则32位对于16进制来说需要8位(每一位是二进制的4个位)...原创 2020-01-27 21:42:43 · 3366 阅读 · 0 评论 -
char temp[1000002] = { " " };和char temp [1000002]={' '};的区别
第一个花括号里包含着双引号,则除了一个空格外还隐含着一个‘\0’,因为双引号是用来包含字符串的,所以末尾是有一个‘\0’的,而后面的单引号是不包含‘\0’的,只包含一个空格...原创 2020-01-25 13:08:22 · 677 阅读 · 0 评论 -
strlen(NULL)可以有吗
我们知道c语言中字符串可以通过char *c=“dehddh”;,然后求这个的长度strlen(c),但是如果char *c=NULL;,那么strlen是否还可以求值呢,答案是不可以的,因为NULL并不是一个字符串,所以如果strlen(c)会发生异常。...原创 2019-11-15 20:56:56 · 4277 阅读 · 1 评论 -
二级指针的使用
二级指针的使用其实很简单,但是会遗忘,所以这里记录一下,比如int * a=&b;那么二级指针就是int ** c=&a;也就是说a是一个指针,而c是一个二级指针,所以对指针取地址,也就是指了两次,也就是二级指针了。...原创 2019-11-11 21:17:00 · 271 阅读 · 1 评论 -
c++里的getline函数
c++中的getline函数,getline()函数是一个比较常见的函数。根据名字直接望文生义,就知道这个函数是来完成读入一行数据。在C++中本质上有两种getline函数:第一种:在头文件<istream>中,是iostream类的成员函数。第二种:在头文件<string>中,是普通函数。第一种:在<istream>中的getlin...转载 2019-10-17 08:51:06 · 6960 阅读 · 1 评论 -
c++编程提示function definition is not allowed here
function definition is not allowed here这是因为函数内部不能再定义函数,原创 2019-10-16 23:26:14 · 16852 阅读 · 0 评论 -
c语言:“不能在赋值语句中通过赋值运算符‘=’对字符型数组进行整体赋值。”这句话为什么是对的? 5 例如: main() { char s[5]="asdf"; } 这个整体赋值应该是可以的啊,请教应
char s[5]="asdf";这句不是赋值而是初始化;讲的赋值语句是在程序执行中的赋值,就像int a;int b;b=a; 这是赋值;对于字符而言,要赋值就要采用strcpy(s1,s2)这个函数。、转自https://zhidao.baidu.com/question/229946335.html...转载 2018-05-10 19:43:14 · 20932 阅读 · 0 评论 -
C++中栈区 堆区 常量区
#include<iostream.h>void main(){char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。const char e[]="abc";栈 const char f[]="abc转载 2018-07-14 19:15:37 · 2036 阅读 · 0 评论 -
return语句
http://www.360doc.com/content/12/0716/09/10262458_224472883.shtml https://book.2cto.com/201307/27526.html转载 2018-08-10 05:49:11 · 127 阅读 · 0 评论 -
结构体指针的定义和使用
https://www.xuebuyuan.com/2967350.html转载 2018-08-03 14:37:54 · 5360 阅读 · 0 评论 -
关于C++中 指针,地址,指针变量 三者之间的区别和联系:
指针是C和C++的重点,也是后面学习数据结构的基础,因此深刻理解指针的概念很重要。但是指针的概念比较抽象,难于理解,而且一些复杂的程序中都是离不开指针的,如果不能理解指针,那么就不能理解较为复杂的程序了,作者结合了自己学习C++的经验,对指针,指针变量,地址作如下阐述。1.什么是指针: 程序中最离不开的就是变量,而变量相当于是一个容器,是用来存放数据的,变量是存放在内存中的...转载 2018-08-17 22:49:02 · 1834 阅读 · 2 评论 -
未初始化的变量的值 0Xcccccccc -858993460 烫
指针:0xCCCCCCCCVC的DEBUG版会把未初始化的指针自动初始化为0xCCCCCCCC,而不是就让它随机去,那是因为DEBUG版的目的是为了方便我们调试程序的,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次正常运行,再一次虽然没崩掉,但结果不对……那显然对我们解bug是非常不利的。DEBUG版本为了能让程序员更早的发现错误,把堆栈上的数据...转载 2018-08-08 14:42:35 · 610 阅读 · 0 评论 -
CPU缓存原理
https://wenda.so.com/q/1474290379726351?src=140http://blog.51cto.com/wynlx8/1657369转载 2018-08-20 23:03:05 · 704 阅读 · 0 评论 -
const修饰的变量的存储位置
c语言中const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放。而const局部变量(局部变量就是在函数中定义的一个const变量,)存储在栈中,代码块结束时释放。在c语言中可以通过指针对const局部变量进行修改,而不可以对const全局变量进行修改。因为const全局变量是存储在只读数据段而c++中,一个const不是必需创建内...原创 2019-01-17 15:13:39 · 15640 阅读 · 4 评论 -
C语言深度解剖笔记2之柔性数组和动态数组
柔性数组是c99引进的,在c99中,结构体的最后一个成员我们允许是未知大小的数组,这个数组我们就叫做柔性数组,而且在这个柔性数组之前必须有至少一个其他成员。sizeof 返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构体内存的大小,以适应柔性数组的预期大小。如下:typedef struct st_typ...原创 2019-01-18 16:28:06 · 240 阅读 · 0 评论 -
c++中的关键字strut与class的区别
在C++里struct 关键字与class 关键字充当类时可以互换,但是struct创建的类默认是public的,而class是private的原创 2019-01-18 16:40:15 · 320 阅读 · 0 评论 -
C语言深度解剖笔记3之符号
接续符和转义符C 语言里以反斜杠(\)表示断行。编译器会将反斜杠剔除掉,跟在反斜杠后面的字符自动接续到前一行。但是注意:反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格,反斜杠除了可以被用作接续符,还能被用作转义字符的开始标识,比如\n 回车换行\t 横向跳到下一制表位置。单引号、双引号双引号引起来的都是字符串常量,单引号引起来的都是字符常量,字符串本质上是多个字符组成的字符数组...原创 2019-01-19 13:37:43 · 204 阅读 · 0 评论 -
C语言深度解剖笔记6之内存管理;
什么是野指针野孩子:没人要,没人管的孩子;行为动作不守规矩,调皮捣蛋的孩子。所以野指针就是指向不明,指向地址随机的指针。定义指针变量的同时最好初始化为NULL,用完指针之后也将指针变量的值设置为NULL。也就是说除了在使用时,别的时间都把指针“栓”到0 地址处。这样它就老实了。栈、堆和静我们可以简单的理解为内存分为三个部分:静态区,栈,堆。堆栈就是栈,静态区:保存自动全局变量和...原创 2019-01-25 00:02:27 · 148 阅读 · 0 评论 -
C语言深度解剖笔记4之预处理
#define#define用来定义宏,也可以用来定义字符串,尤其是路径,如C), #define ENG_PATH_3 E:\English\listen_to_this\listen\有的系统里规定路径的要用双反斜杠“\\”,用define 宏定义表达式#undef:#undef 是用来撤销宏定义的 用法:#define PI 3.141592654…// code#un...原创 2019-01-20 14:34:31 · 169 阅读 · 0 评论 -
C语言深度解剖笔记之关键字
1.c语言关键字有32个之多,这里主要挑选几个重要的说一说:auto :声明自动变量,就是说这个auto声明一个变量是自动变量,所谓自动变量就是自动存储变量,也就是需要开辟内存来存储这个变量,编译器在默认情况下将所有变量都认为是auto的c语言中使用auto修饰一个变量,这个变量可以先不初始化,编译器会使用一个随机值值初始化auto修饰的变量,即可以先定义再初始化,为了避免一个变量是随机值...原创 2019-01-15 11:45:22 · 272 阅读 · 0 评论 -
声明与定义的区别
定义的时候是开辟内存,并将为这块内存取上一个名字,这块内存的位置是不变的,所以不能多次定义同名变量或者对象声明是未分配内存空间原创 2019-01-16 12:13:06 · 430 阅读 · 0 评论 -
变量的命名规则
1.可以望文生义2.用最少的文字表达最多的意思,min_length&&max_information3.当标识符由多个单词组成时,每个单词的首字母大写。int CurrentVal;。4.函数名不能再被用于定义变量。void foo(int p_1){int x = p_1;}void static_p(void){int foo = 1u;//err...原创 2019-01-16 13:02:22 · 201 阅读 · 0 评论 -
深入理解计算机系统第一章
即每个程序中的每个字符都在ASCII标准中被一个具体的数值来标明。这些字符称之为ASCII字符,由ASCII字符构成的文件叫做文本文件,其他都是二进制文件从源文件到目标文件需要4个阶段,预处理,编译,汇编,链接。系统的硬件组成:总线:贯穿系统的是一组电子管道,称为总线,它携带信息字节并负责在各个部件间传递。I/O设备是系统与外部世界的联系通道,I/O设备包括,输入设备键盘鼠标,...原创 2019-01-27 01:13:50 · 150 阅读 · 0 评论 -
不同类型的变量与零值的比较。
bool类型,bool值分为TRUE和FALSE,FALSE是0,TRUE是非0,所以一般在if语句后面的括号一般是if(FAlSE)和if(!FALSE),这个和if(0),if(!0)一样。float类型与零值比较,这个要设置精度范围,用一个精度范围来表示0,指针变量与“零值”进行比较int* p = NULL;,写为if(NULL == p); if(NULL != p);这样的...原创 2019-01-16 21:35:25 · 192 阅读 · 0 评论 -
解析内存对齐 Data alignment: Straighten up and fly right的详解(内存存取颗粒)
https://www.jb51.net/article/36726.htm为了速度和正确性,请对齐你的数据. 概述:对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题.数据对齐对你的程序的表现甚至能否正常运行都会产生影响.就像本文章阐述的一样,理解了对齐的本质还能够解释一些处理器的"奇怪的"行为.内存存取粒度程序员通常倾向于认为内存就像一个字节数组.在C...原创 2019-11-08 10:06:06 · 184 阅读 · 0 评论 -
指针的几个运算
指针的算术运算与解引用指针的加减:指针的加减是是加类型(指针的类型,)类型是几个字节,指针就向前或者向后走几个字节。指针的解引用:指针的类型决定了在对指针进行解引用的时候,能访问多少个字节,比如对char*的指针变量进行解引用只能访问一个字节,对int*的指针变量解引用能访问4个字节。一般这种操作出现在对地址的强转上,借以扩充或者缩小可以访问的地址的范围。这个在多态的虚函数表那块有应用。...原创 2019-05-20 00:16:48 · 2457 阅读 · 0 评论 -
模拟实现strlen三种方式
方式1:计数器int my_strlen(const char* str){int count=0;while(*str)//*str一直在等\0.{count++;str++}return count;}方式2:不能创建临时变量的方法(即不能用计数器),那么使用递归的形式int my_strlen(const char *str){if(*str!='\0...原创 2019-05-20 07:47:02 · 99 阅读 · 0 评论 -
c语言中字符串的存储方式。
c语言中没有字符串类型,而c++中有字符串类型string。所以c语言使用两种方式来存储字符串。char*和char[],char*a="123456";右面的123456是字符串常量,所谓常量就是这个值是保存在内存中的字符串常量区。每个字符串后面都有系统预设的结束符"\0",char a[ ]="123456";//这个是将字符串保存在数组里。这个是数组初始化。相当于a[0]=1,a[1...原创 2019-05-20 11:11:42 · 18991 阅读 · 0 评论 -
模拟实现strcpy
strcpy是拷贝字符串,所以在c语言中是返回char*,char[ ]char*mystrcpy(char*dst,char*src){char*ret=dst;assert(src);//assert(dst);//这个是判断dst是不是空,如果是空则没有存储src的空间。while(*dst++=*src++)//这也是一种写法,只不过看起来不明确,遇到'\0'就会停止,因...原创 2019-05-20 12:49:08 · 488 阅读 · 1 评论 -
模拟实现strcat
//c语言中的strcat实现的是将一个字符串拼接到另一个存储字符串的内存空间中。比如说//一个空间是10,里面存储一个占用3个字节的字符串,另一个空间是4,里面存储了一个占用内存是4或者小于4的字符串,所以拼接的时候就是将字符串拼接到可以容纳两个字符串拼接起来后所占用内存的那个空间里。//而不是将两个字符串拼接到一个足够大的重新开辟的空间里char*my_strcat(char *des...原创 2019-05-20 13:46:18 · 182 阅读 · 0 评论 -
c++中break和cintinue的区别
break:结束当前整个循环,执行当前循环下边的语句,忽略循环体中任何其它语句和循环条件测试。continue:终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。注意:continue只能用于循环,而break只能用于循环或者switch,循环比如while循环,for循环,等等,不能用于判断语句,往往在代码量较大的时候,我们就可能忘了...原创 2019-05-15 16:11:45 · 740 阅读 · 0 评论 -
模拟实现strstr(找出一个字符串在另一个字符串中第一次出现的,)
strstr是找出一个字符串在另一个字符串中第一次出现的,strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。c语言解法:char*my_strstr(const char*str1,const char*str2){assert(str1);assert(str2...原创 2019-05-20 23:08:46 · 420 阅读 · 0 评论 -
c语言中关于char和int类型的一些思考
char实际上就是一种整数的,每个字符都对应一个ASCII码,而这个ASCII码就是整数。所以在字符相减或者相加的时候,得到的值就是整数,也就是ASCII码之间的差值或者相加后的值。...原创 2019-05-21 10:18:12 · 437 阅读 · 0 评论 -
c语言模拟实现strcmp
strcmp为字符串比较函数,其函数原型为int strcmp( const char *str1, const char *str2 );设有两个字符串为str1,str2,若str1=str2,则返回零;若str1< str2,则返回负数(一般为负1);若str1>str2,则返回正数(一般为正1)。实际上比较的是字符的ASCII码。思路:把两个字符串的字符(ASCII码)...原创 2019-05-21 12:59:25 · 390 阅读 · 0 评论 -
宏和函数的不同之处
宏和函数的不同之处代码长度:宏是将代码嵌入到程序中。程序的代码长度会增加 ///////////函数代码只出现在一个地方。每次使用这个函数时调用这个代码即可.执行速度:宏更快,宏只是简单的替换,而函数需要栈的参与操作符优先级:宏只是简单的替换,所以代码的上下文的符号可能会改变原本的宏的优先级,除非宏有括号括着,而函数没有这样的担忧。参数类型:宏与类型无关,而函数的参数是与类型...原创 2019-05-16 14:12:06 · 231 阅读 · 0 评论 -
命令行定义符号大小
许多C的编译器提供了一种能力,允许在命令行中定义符号,用于启动编译过程。#include<stdio.h>int main(){int array[ARRAY_SIZE];int i=0;for(;i<ARRAY_SIZE;i++){array[i]=i;}for(i=0;i<ARRAY_SIZE;i++){printf("%d",array[i...原创 2019-05-16 14:19:42 · 168 阅读 · 0 评论 -
在vs2013中写for循环出现应输入声明
这个是因为for循环不能出现在全局变量的位置,应出现在函数中。原创 2019-06-06 22:44:27 · 4526 阅读 · 0 评论 -
一个项目下的多个文件里只需要一个main函数
一个项目下的多个文件里只需要一个main函数,不然会报main文件已经在某一个编译单元生成的obj文件中定义这样的错误。原创 2019-08-04 11:42:29 · 789 阅读 · 0 评论