C/C++学习总结
文章平均质量分 57
stoic163
转载先进,学习验证,总结分享!
展开
-
关于C语言中定义static变量的解释
在C语言中static类型的变量的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数。经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势。C语言中程序的内存分布: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改...原创 2020-03-07 11:39:55 · 5247 阅读 · 1 评论 -
关于零指针、NULL、空指针、vold*指针和野指针的总结
1.零指针零值指针,是值为0的指针,可以是任何一种指针类型,可以是通用变体类型void*,也可以是char*,int*等等。在C++里面,任何一个概念都要以一种语言内存公认的形式表现出来,例如std::vector会提供一个empty()子函数来返回容器是否为空,然而对于一个基本数值类型(或者说只是一个类似整数类型的类型)我们不可能将其抽象成一个类(当然除了auto_ptr等只能指针)来...原创 2019-12-20 18:19:01 · 2334 阅读 · 0 评论 -
关于零长度数组的理解
零长度数组(柔性数组),一般用于可变结构体中,如:struct Packet{ int state; int len; char cData[0]; //这理是一个零长度数组};用途 : 长度为0的数组的主要用途是为了满足需要变长度的结构体用法 : 在一个结构体的最后, 申明一个长度为0的数组, 就可以使得这个结构体是可变长的. 对于编译器来说, 此时长度...原创 2019-12-20 18:11:47 · 706 阅读 · 0 评论 -
static关键字 与 volatile关键字的介绍
1.static关键字当一个进程的全局变量为static之后,它就变成了静态全局变量,静态全局变量和其他的全局变量的存储地点并没有区别,都在.data段(已初始化)或者.bss段(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。这样的static函数与普通函数的区别是:用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是...原创 2018-11-02 23:12:42 · 4360 阅读 · 0 评论 -
选择排序法与冒泡排序法的区别
以下是选择排序法与冒泡排序法的对比,给初学者的一个参考!代码如下:#include<stdio.h>#include<time.h>#include<stdlib.h>#define N 12int main(void){ int ch[N]; int i,j,min,temp; printf("%d rand nu...原创 2014-11-05 11:25:11 · 2191 阅读 · 0 评论 -
回环接口(loop-back/loopback)
回环接口(loop-back/loopback)Moakap整理 Loopback接口是一个虚拟网络接口,在不同的领域,其含义也大不一样。 1. TCP/IP协议栈中的loopback接口 在TCP/IP中回环设备是一个通过软件实现的虚拟网络接口,它不与任何硬件相关联。loopback接口一般被完整的集成在计算机系统的内部网络框架中。 IP协议中的loopba转载 2014-12-04 09:52:34 · 1945 阅读 · 0 评论 -
信号量与PV操作
在计算机操作系统中,PV操作是进程管理中的难点。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1; ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S):①将信号量S的值加1,即S=S+1;转载 2014-12-04 10:04:47 · 672 阅读 · 0 评论 -
使用头插法进行链表倒置
使用一个简单的方法进行链表的倒置,如:#include#include#define N 10#define TRUE 1#define FALSE 0typedef int data_t ;typedef struct node {data_t data;struct node *next;}linknode,*linklist;void creat_list(li原创 2015-01-25 15:59:32 · 1080 阅读 · 0 评论 -
约瑟夫环问题
/*约瑟夫环问题: 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。*/#include#include//链表节点typedef struct _RingNode{ int pos;//位置 struct _RingNode *next; }RingNode,*RingNodePtr;//创建约瑟夫环,pHead:链表头节点,cou原创 2015-01-28 18:17:43 · 495 阅读 · 0 评论 -
内存中堆与栈的区别
1、内存分配方面: 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、申请方式方面: 堆转载 2015-02-02 16:17:34 · 473 阅读 · 0 评论 -
C中的auto、static、register、extern、const和volitate
C语言中的每一个变量和函数有两个属性:数据类型和数据的存储类别。数据类型(整形、字符型等),存储类别是指数据在内存中存储的方法,存储方法有两大类:静态存储类和动态存储类。具体包括四种:自动的(auto),静态的(static),寄存器的(register)和外部的(extern)。 auto变量:函数中的局部变量,如不专门声明static,一般都是动态地分配存储空间。自动变量:在调转载 2015-03-23 17:58:21 · 430 阅读 · 0 评论 -
Linux环境下写一个 简单的 makefile
当我们有多个源程序时,用gcc每个都编译,这样我们没有修改过的源文件也得重新编译一次,很麻烦,这事写makefile就派上了用场,可以大大的提高我们的编码和调试速度。为此:1.计划写三个函数及两个头文件,分别是:main.c[cpp] view plaincopy#include "sum.h" #include "ma转载 2015-03-23 18:04:27 · 1262 阅读 · 0 评论 -
指针数组与数组指针、指针函数与函数指针
在好多程序员面试中,会有指针数组与数组指针的辨认题目,好多人都不知道该怎么去辨认,现在以我自己的理解给大家讲讲简单的区分方法。例如: char *p[10] ---> 指针数组 char (*p)[10] --> 数组指针 辨认方法: char *p[10] --->可以这样理解:char * 是该数组的类型,p为数组名,这样就不难理解了,指针数组原创 2015-04-01 15:09:44 · 525 阅读 · 0 评论 -
C语言中的空格符与结束符之间的差异
空格符' '和结束符'\0'是不一样的,在ASCII里面,空格(space)符号' '的ASCII码是0x20,而结束符'\0'是0x0, 两个字符是完全不一样的.结束符 一般来描述一个字符串的结尾,其实是控制符的一种,但不能理解为没有字符,应该理解为代表什么都没有的字符.好比回车0x0A和换行0x0D虽然不显示,但是也是控制字符的一种.(这些字符以前是用于打印机的,...原创 2015-04-07 14:25:29 · 5832 阅读 · 0 评论 -
用strtok函数将ip地址转化为数字
常见 strtok函数的使用之处是在点分十进制的ip地址提取中,本文是通过简单的例子将点分十进制的ip地址转化为数字。函数原型为:char *strtok(char s[], const char *delim);功能作用:分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调原创 2016-11-10 17:03:52 · 1350 阅读 · 0 评论 -
随机数的产生
——引用C库原文:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:printf("Random numbers are: %i %i/n",rand(),rand());原创 2017-02-24 17:22:12 · 310 阅读 · 0 评论 -
#ifdef与#ifdefine()之间的区别
在查阅Linux内核源码的过程中,发现存在两种不同类型的条件编译语句:#ifdef MACRO_A和#if defined(MACRO_A)或#if !defined(MACRO_A)#ifdef和#ifdefined()之间的区别实际上,两者并无本质的差别,但后者的应用范围更广,能支持多个预编译变量的检查。#if defined(MACRO_A) && !defined(MACR...转载 2017-06-21 10:33:48 · 36073 阅读 · 2 评论