c语言
文章平均质量分 66
zou_albert
菜鸡程序员一个
展开
-
【c语言】memcpy使用防止地址越界
memcpy函数原型:void * memcpy (void * dest, const void * src, size_t n);功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中请看下面的一个例子:void check_data(int *buffer)//buffer 的长度是128{ int temp[200]; memcpy(temp,buffer,sizeof(temp));}此函数出现的问题,buffer的大小是128,但是te原创 2022-05-30 22:39:59 · 2408 阅读 · 0 评论 -
c语言项目代码编写习惯概述
在c语言写的大型项目时,需要对代码进行规范化管理,通常是一个.h文件,对应一个.c文件,举例说明// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "change.h"#include "stdlib.h"int main(){ printf("hello\n"); float data = change(0.1, 0.2); printf("%f \n",data); system("p原创 2022-05-09 22:30:39 · 446 阅读 · 0 评论 -
C++ main函数中参数argc和argv含义及用法
argc 是argument count的缩写,表示传入main函数的参数个数。argv是argument vector的缩写,代表传入main函数的参数序列或者指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径的,所以确切的说需要我们输入的main函数的参数的个数应该是argc -1个。简单用法实例:#include <iostream>using namespace std;int main(int argc,char *argv[]){ fo原创 2020-07-12 09:05:01 · 826 阅读 · 0 评论 -
C/C++ 数组作为参数传递 指针 引用——VS——普通值传递、指针传递、引用传递
文章目录1 C++ 值传递、指针传递、引用传递详解值传递:指针传递:引用传递:2 数组作为函数的形参2.1 一维数组传递2.2 二维数组传递总结1 C++ 值传递、指针传递、引用传递详解值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作原创 2020-08-25 19:35:08 · 18479 阅读 · 1 评论 -
c语言和c++常用的头文件整理
C++的头文件! #include <ctype.h>//字符处理 #include <errno.h>//定义错误码 #include <float.h>//浮点数处理 #include <fstream.h>//文件输入/输出 #include <iomanip.h>//参数化输入/输出 #include <iostream.h> //数据流输入/输出 #include <limits.h> /原创 2020-07-12 20:37:24 · 879 阅读 · 0 评论 -
c++ 输入一行以空格分割的数字(数目未知),存入整型数组
方法一:利用getchar函数和ungetc函数,通过getchar函数判断回车,以及判断时候为数字,然后通过ungetc函数,将通过getchar函数获得的字符送回缓冲区,再通过cin函数取出作为int型数组。#include<iostream>using namespace std;int main(){ int a[50]; int i = 0; char c; while((c=getchar())!='\n') { if原创 2020-09-12 17:28:24 · 11865 阅读 · 0 评论 -
C++ 中include头文件时尖括号与双引号的区别
C++ 中include头文件时尖括号与双引号的区别1 区别系统自带的头文件用尖括号括起来,表示编译器先在用户的工作目录下搜索头文件,如果搜索不到则到系统默认目录下去寻找,所以双引号一般用于包含用户自己编写的头文件。如:#include “student.h” , #include “XXXX.h” 。用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找。所以一般尖括号用于原创 2020-07-14 22:37:44 · 7537 阅读 · 1 评论 -
C++中万能头文件bits/stdc++.h的介绍(面试 竞赛oj必备头文件)
#include<bits/stdc++.h>是一个包含了C++所有头文件的一个头文件,为了方便而发明的。在编程竞赛中使用,能够节省时间的。大部分的oj兼容性还是蛮强的,可以放心使用。其中包含了一下头文件://c#ifndef _GLIBCXX_NO_ASSERT#include<cassert>#endif#include<cctype>#include<cerrno>#include <cfloat>#include .原创 2020-08-20 12:47:36 · 3076 阅读 · 0 评论 -
sizeof计算空间大小的总结
关于sizeof的总结 1、sizeof的使用形式:sizeof(var_name)或者sizeof var_name 2、变量名可以不用括号括住:sizeof a 3、数据类型必须用括号括起来:sizeof(int) 4、sizeof可以对表达式求值:sizeof(2+3.14),实际是sizeof(double) 5、sizeof可以对函数调用求值,实际上是对返回值类型求值 6、以下情况不能用sizeof进行求值 1)不能对函数名求值 2)不能对不确定返回值的类型求转载 2022-01-14 20:22:58 · 1309 阅读 · 0 评论 -
c++中vector做形参传递的三种形式
c++中常用的vector容器作为参数时,有三种传参方式,分别如下(为说明问题,用二维vector):function1(std::vector<std::vector > vec),传值function2(std::vector<std::vector >& vec),传引用function3(std::vector<std::vector >* vec),传指针三种方式对应的调用形式分别为:function1(vec),传入值functio转载 2020-08-25 15:01:29 · 13041 阅读 · 0 评论 -
c++ algorithm下的常用函数列举
1、algorithm的简单介绍 c++之中的algorithm库包含了所有vector、list、set、map数据结构能想到的一些函数,例如查找,替换,排序,计数等常用的功能的。 官网的链接:http://www.cplusplus.com/reference/algorithm/ 可以直接的学习。2、algorithm常用的函数介绍2.1 max(),min(),abs()原创 2020-05-29 16:10:15 · 2291 阅读 · 0 评论 -
C/C++,用0x3f3f3f3f表示无穷大
https://blog.csdn.net/u011361880/article/details/77511559?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase如果转载 2020-06-18 20:06:49 · 2546 阅读 · 2 评论 -
C/C++ &与&& |与|| 的区别以及按位异或运算符^
https://blog.csdn.net/HELPLEE601276804/article/details/32723087原创 2020-05-27 17:02:51 · 490 阅读 · 0 评论 -
C++ string 类中substr的用法定义,参数解释
1 简单介绍substrbasic_string substr(size_type _Off = 0,size_type _Count = npos) const;解释:substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。2 用法和定义basic_string substr( size_type pos = 0,原创 2020-07-09 12:41:17 · 2016 阅读 · 0 评论 -
c++之中结构体中.和->以及结构体sort排序
1 结构体中.和->的用法定义结构体指针,访问成员时就用->定义结构体变量,访问成员时就用.例如:struct A {int a;char b;};struct A q; 访问成员就用:q.a;struct A *p; 访问成员就用:p->a;#include"stdio.h"#include"stdlib.h" struct linkwqf{ int age; char * name; struct linkwqf* next;};struct lin原创 2020-09-02 22:17:52 · 350 阅读 · 0 评论 -
c语言memset详解
目录1 函数声明1.1功能1.2 例子2 常见错误2.1 搞反了 ch 和 n 的位置.2.2 过度使用memset2.33 特殊例子1 函数声明void *memset(void *s, char ch, unsigned n);1.1功能将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值。块的大小由第三个参数指定,作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。1.2 例子#include <stdio.h>#i原创 2022-02-27 23:58:28 · 7347 阅读 · 1 评论 -
C++:派生类的构造函数和析构函数的调用顺序
https://www.cnblogs.com/duwenxing/p/7483133.html转载 2020-08-28 21:32:58 · 216 阅读 · 0 评论 -
c++中double型的最大值和最小值
DBL_MAX:double型的最大值DBL_MIN:double型的最小值FLT_MAX:float型的最大值FLT_MIN:float型的最小值1、负值取值范围为-1.79769313486231570E+308到-4.94065645841246544E-324;2、正值取值范围为4.94065645841246544E-324到1.79769313486231570E+308。...原创 2020-05-31 21:16:22 · 15735 阅读 · 1 评论 -
for(auto &c:s)与for(auto c:s)
在c11标准下可以执行的特殊格式的for循环语句,区别在于引用类型可以改变原来的值#include<iostream> using namespace std; int main() { string s("hello world"); for(auto c:s) c='t'; cout<<s<<endl;//结果为hello world for(auto &c:s) c='t'转载 2020-05-31 10:05:14 · 443 阅读 · 0 评论 -
C++ 头文件「ctype.h」里的:isalpha、islower、isupper、isalnum等函数
ctype.h是C标准函数库中的头文件,定义了一批C语言字符分类函数(C character classification functions),用于测试字符是否属于特定的字符类别,如字母字符、控制字符等等。既支持单字(Byte)字符,也支持宽字符。1 isalpha()isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。 cout << isalpha('a');//返回非零 cout << isalpha('2');//返回0#inclu原创 2020-07-10 14:59:08 · 2820 阅读 · 0 评论 -
C/C++整型上下限INT_MAX INT_MIN及其运算
C中常量INT_MAX和INT_MIN分别表示最大、最小整数,定义在头文件limits.h中。#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)C中int类型是32位的,范围是-2147483648到21474836471. INT_MAX,INT_MIN数值大小因为int占4字节32位,根据二进制编码的规则,INT_MAX = 2^31-1,INT_MIN= -2^31.C/C++中,所有超过该限值的数,都会出现溢出,出现warni转载 2020-05-24 11:13:42 · 923 阅读 · 0 评论 -
C++ stringstream介绍,使用方法与例子
From:https://blog.csdn.net/JoeBlackzqq/article/details/70327031 概述C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。ostringstream类用于执行C风格的串流的输出操作。strstream类同时可以支持C风格的串流的输入输出操作。istringstream转载 2020-06-01 16:19:55 · 575 阅读 · 0 评论 -
C/C++编程:const使用总结
目录1 概述:const和define的区别2. 修饰局部变量3. 常量指针与指针常量4. 修饰函数的参数5. 修饰函数的返回值6. 修饰全局变量参考链接1 概述:const和define的区别先看一个典型的程序:#include<iostream>using namespace std; int main(){ int num = 1; #define t1 num + num #define t2 t1 % t1 cout << "t2 is " <原创 2022-03-30 16:12:56 · 977 阅读 · 0 评论 -
巧用可变参数宏、编译器内置宏和printf输出调试信息
前言:我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。比如,定义一个宏开关:#define __DEBUG当需要调试的时候,使用语句:#ifdef __DEBUGprintf(xxx);#en原创 2022-03-20 15:38:49 · 206 阅读 · 0 评论 -
二维数组作为函数参数传递剖析(C语言)
前言:很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错://对于一个2行13列int元素的二维数组//函数f的形参形式f(int daytab[2][13]) {...}//以下两种可以忽略行数f(int daytab[][13]) {...}f(int (*daytab)[13]) {...}甚至会有人告诉你多维数组作为参数传递可以省略第一维,其他维不能省略。然而你对这种形式并不满意:如果事先限定了二维数组的大小,函数的泛用性就要大打折扣了。因为你真正需要的,是可转载 2022-01-14 21:45:53 · 10244 阅读 · 0 评论 -
未处理的异常 stack overflow
今天在编译程序时遇到“0x00e304f7 处有未经处理的异常: 0xC00000FD: Stack overflow”的错误,也就是栈溢出了,google了一下,原来是我申请的一个数组变量太大了,double num[100000], 改小一些就好了。局部变量的定义是在栈中申请空间的,栈溢出就说明局部变量占用空间太大了,可以采用动态申请内存的方法或者如果不需要这么大就直接改小一点,我这里其实用不到这么大,就改小了一些,编译通过!!...原创 2022-01-05 23:38:00 · 2257 阅读 · 0 评论 -
C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
C语言中,数组初始化的方式主要有三种:1、声明时,使用 {0} 初始化;2、使用memset;3、用for循环赋值。那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码:#define ARRAY_SIZE_MAX (1*1024*1024) void function1(){ char array[ARRAY_SIZE_MAX] = {0}; //声明时使用{0}初始化为全0} void function2(){ char array[ARRAY_SIZE转载 2021-12-31 00:09:34 · 3819 阅读 · 0 评论