c语言概念
文章平均质量分 60
weixin_41318405
此人不懒,什么都留下了
展开
-
可变参数列表解析...
C语言中可变参数是一个比较有意思的实现,通过将函数实现为可变参数的形式,可以使得函数可以接受一个以上任意多个参数(不固定),例如printf()函数等函数参数进栈顺序从右往左,如下图从上到下;在上图中我们要读取可变部分,怎么读取呢?首先指针char *指向最下面,对num取地址,并且强转为char *,并且加上num类型的大小,这时指针指向a,然后对指针强转为int*解引用,就可以得到a的内容,以...原创 2018-04-22 18:56:10 · 245 阅读 · 0 评论 -
指针(下)
【本次任务】指针数组数组指针函数指针函数指针数组指向函数指针数组的指针【指针数组】1.指针数组就是数组,是存放指针(地址)的数组。2.正确定义指针数组:int *P[10]; //p是一个指针数组,里面存放10个整形元素的地址3. char **p[10]; //定义一个二级字符指针数组4.定义一个指针数组求元素个数:char *arr[] = { "vvv", "ssss", "...原创 2018-05-04 23:04:20 · 204 阅读 · 0 评论 -
指针(上)
一、指针是什么?指针就是地址。二、为什么会存在指针的概念?将计算机的内存分成很多小的单元,每个单元对应一个独一无二的地址,这样一个地址表示一个空间,所以指针就是方便定位内存中某个位置。一个小的内存单元多大?(一个自己字节)如何编址?约定:一个字节给一个地址在32位机器中,假设有32根地址线,每根地址线在寻址过程中产生一个电信号(0或者1)那么32根地址线产生的地址就会有00000000 00000...原创 2018-05-01 17:41:59 · 135 阅读 · 0 评论 -
联合体(union)的使用方法及其本质
1.联合体union的基本特性——和struct的同与不同union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。不过区别也挺明显:结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用...转载 2018-04-22 19:08:40 · 1013 阅读 · 0 评论 -
C语言Debug和Release的介绍
一、定义(1)Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。(2)Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用二、Debug和Release区别Debug包含调试信息,不做任何优化。而Release不包含调试信息,做了各种优化。(相比Debug同一程序它的内从较小)见下图:三、来看下面一段程序#...原创 2018-03-31 16:27:27 · 4313 阅读 · 0 评论 -
数字0、 ‘\0'、 NULL 和 字符 ’0‘的区别,以及字符与数字之间的转化atoi函数
补充:(1)一个字符 '2'怎么转化为整形数字2?由于字符 '2'的ASCII为50,'0'的ASCII为48,所以 '2' - '0' = 2;(2) atoi(),讲一个类似于“12345”这种数字字符串转化为数字12345;【头文件】#include<stdlib.h>【函数说明】atoi函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等等。空格可以通过iss...原创 2018-04-21 18:30:59 · 2513 阅读 · 1 评论 -
void 、 void* 和 NULL的理解
前言一个指针变量可以指向计算机任何一块内存,不管该内存有没有被分配,也不管该内存有没有使用权限,只要把该内存地址给它,他就可以指向该内存,C语言没有一种机制来保证指针指向内存的正确性,所以程序员必须提高警惕。需使用初始化的局部变量先看一段代码#include<stdio.h>#include<stdlib.h>#pragma warning(disable:4996)...原创 2018-04-21 20:19:53 · 4439 阅读 · 0 评论 -
vs2013警告 error C4996 解决办法
在我的上一篇博文《void 、 void* 和 NULL的理解》当中有几个例子我都在添加了这么一句话,why?#pragma warning(disable:4996)看下面一段代码://#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//#pragma warning(disab...原创 2018-04-21 20:37:25 · 4331 阅读 · 0 评论 -
main函数参数解析以及命令行参数
【Linux】main函数原型如下:main( int argc, char *argv[ ], char *envp[ ] ){program-statements}可知,main函数是有参数的,第一个参数:argc是一个整形变量,表示命令行参数的个数(含第一个参数,即目录)例如在Linux下 ./a.out -a -b -c -4... 这一段命令由多少个空格隔开多少个区域,arg...原创 2018-04-22 15:34:47 · 1515 阅读 · 0 评论 -
gets()和scanf()函数的区别,以及对清空缓冲区概念的理解
scanf()在一个字符串中遇到空格、回车、Tab结束,不接受遇到的空格、回车、Tab控制符后面的字符输入语句,将读入的是空格、回车、tab控制符。如果想要读取可以采用%[]输入;书写格式:%9[^\n],表示不包含\n,输入接受任何非回车字符,结束条件要么输入字符达到9个要么输入回车,如果超过9个则后面的会被省略scanf(" %9[^\n] ", str );问题:看下面一段代码#define...原创 2018-04-22 11:31:12 · 1983 阅读 · 0 评论