![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言学习
一个菜鸡的学习记录
已转行。
展开
-
C语言.void p,void *p;通用类型的指针
void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a; 这行语句编译时会出错,提示“illegal use of type ‘void’”。不过,即使void a的编译不会出错,它也没有任何实际意义。void真正发挥...转载 2019-03-04 11:37:35 · 2693 阅读 · 0 评论 -
C语言.异或^的妙用
异或^:位运算符号,相同的位置0,不同的位置1:例:0101^0001=0100给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?C语言实现:int singleNumber(int* nums, int numsSize) {int result=0;...转载 2019-03-04 14:04:52 · 2985 阅读 · 1 评论 -
C语言.结构体、联合体(共同体)、枚举类型、typedef、define 、头文件、预处理、 条件编译
一. 结构体结构体的概念 -> 新类型定义一个整型变量: int A;定义多个整型变量: int A[100]; --> 数组解决同时定义多个相同类型的变量同时定义多个不同类型变量时? 如何解决? --> 结构体 --> 内部存储不同类型的基本数据类型结构体: 同时有char short int long float double int* c...原创 2019-03-08 09:51:18 · 500 阅读 · 0 评论 -
C语言.编译过程-Ese .iso
gcc 编译过程从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i、 hello.s、 hello.o,最后才得到 hello(或a.out)文件,分别对应着预处理、编译、汇编和链接 4 个步骤,整个过程如图 10.5 所示。这 4 步大致的工作内容如下:(1) 预处理, C 编译器对各种预处理命令进行处理,包括头文件包含、宏定义的扩展、条件编译的选择...转载 2019-07-08 14:32:00 · 303 阅读 · 0 评论 -
C面试常考.进制转换的方法
二进制 B 或 BIN八进制 O 或 OCT十进制 D 或 DEC十六进制 H 或 HEX简单说,N进制就是“逢N进1,借1当N。”N进制转换为10进制,直接写成多项式计算就可以了,就像 253(10进制)=210^2+510+2253(8进制)=28^2+58+3=171(10进制)253(16进制)=216^2+516+3=595(10进制)110111(2进制)=125+1...转载 2019-07-08 17:27:23 · 743 阅读 · 0 评论 -
C语言.命名规范
一、骆驼命名法:1)小驼峰法(camel方法)变量一般用小驼峰法标识。第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母,例如:myFirstName、myLastName2)大驼峰法(Upper Camel Case)也称为:帕斯卡命名法:(pascal方法)常用于类名,函数名,属性,命名空间。相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。例如:...转载 2019-07-12 19:27:54 · 4068 阅读 · 0 评论 -
C语言.内存管理malloc realloc calloc free memset bzero
=================== malloc realloc calloc free ====================malloc、calloc、realloc的区别(1)C语言跟内存分配方式<1>从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量. —》如果变量未初始化就是0初值?...转载 2019-07-12 19:45:38 · 381 阅读 · 0 评论 -
C语言.int main(int argc,char argv *[] )主函数传参及参数内存位置
==================== 主函数传参 ======================int main(int argc, char const *argv[]){prreturn 0;}int argc ---->代表着字符指针数组的元素个数char const *argv[] ---->字符指针数组,每一个元素都是一个字符指针gec@ubuntu...转载 2019-07-12 20:02:32 · 608 阅读 · 0 评论 -
C.如何给变量赋一个指定地址并赋值,如何将变量定义到指定的地址,如何跳到指定地址执行程序,*fun&fun和fun的区别
1.如何给变量赋一个指定地址并赋值答1:int *p; p=(int *)0x123456; *p=0x1234; 答2:(unsigned int *)(0x123456) = 0x1234; //数值强转地址2.如何将变量定义到指定的地址具体要看环境(还没搞懂)①linuxunsigned char temp_A@0x00; //定义无符号变量temp_A,...原创 2019-07-31 15:51:34 · 10096 阅读 · 0 评论 -
C语言.内存申请malloc()
一.栈和堆的区别:栈:堆:二.堆空间①主动申请堆空间 – malloc()#include&lt;stdlib.h&gt;void *malloc(size_t size);size:需要申请堆空间的字节数返回值:成功:指向申请到的这片空间的地址。 失败:NULL。注意: The memory is not initialized.申请到的堆空间一定是没有被初始化过的!...转载 2019-03-06 16:34:24 · 1383 阅读 · 0 评论 -
C语言.字符串,及string.h初步应用
一、字符字符是用单引号 ’ ’ 括起来的单个普通字符或转义字符。例:char c='A'; char c='\n';二、字符串在 C 语言中,字符串实际上是使用 null 字符 ‘\0’ 终止的“一维字符数组”(本质!)。三、字符数组下面的声明和初始化创建了一个 “Hello” 字符串。例子: char A[10];//字符数组的赋值方法,三种赋值: char A[10] =...转载 2019-03-06 14:36:32 · 5964 阅读 · 0 评论 -
C语言.输入输出缓冲区问题
常见问题为:输入获取不到,输出不正常,程序循环卡死等 .输入输出缓存区:当缓冲区中存在回车符的时候,getchar()函数会解析缓冲区中的第一个字符, 它也可以解析缓冲区中的回车符,这时候第一个字符就是回车符 (这一点是与getch函数不同的,getch函数不会解析缓冲区中的回车符, 它只会等待键盘输入,输入之后立即解析,且无论输入何值都不会回显。)。 所以当scanf函...转载 2019-03-01 12:06:42 · 509 阅读 · 0 评论 -
C语言.switch选择条件语句的范围判断表达方法
switch语句可以用…来判断范围,要注意其边界条件(且为包含),其表达方式如下switch(x){ case 0...99: //等价于 0<=x && x<=99; xxxxxx; xxxxxx; break; case 100...199: ...转载 2019-03-01 12:20:33 · 24063 阅读 · 6 评论 -
C语言.内存情况示意图
局部/全部字符串常量放在.rodata段static声明的局部/全部变量: 有初始化的放在.data段,没有初始化的放在.bss段。const声明的局部变量: 这种变量将会在栈中分配,但不能在函数中直接修改,编译器将报错,可通过指针修改。const声明的全局变量: 放在.rodata段...转载 2019-03-01 12:24:38 · 1228 阅读 · 0 评论 -
C语言.函数指针、指针函数、数组指针、指针数组的区分和作用
//首先定义一个指针函数和函数指针//优先级 () * 数据类型int *p() //首先p与()结合,说明是个一个函数,在与*结合,所以是一个返回指针的函数,作用和普通函数比是返回一个int型指针int (*p)() //首先与*结合,说明是一个指针,再与右边()结合,所以是一个指针函数,作用和普通指针比是指向一个函数//指针函数 本质为函数,作...转载 2019-03-01 12:57:10 · 531 阅读 · 0 评论 -
C语言.为什么要用extern声明?
全局变量和函数的储存类型为extern,即作用域为本项目有效,但在其他文件使用时为什么还要使用extern声明呢,原因如下:现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相不透明的。也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子:创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件://A.cppint i;...转载 2019-03-01 15:35:27 · 1545 阅读 · 0 评论 -
C语言.递归函数.回调函数.inline内联函数
内联函数定义:建议:For function-like macros, prefer inline functions to #defines对于类似宏的函数,首选内联函数来定义(某些函数被重复调用多次,可以考虑把函数设置为内联函数)注意:和宏定义不同,宏定义是在预处理的时候展开替换,而内联函数是在运行的时候才进行替换。...转载 2019-03-01 16:05:29 · 1330 阅读 · 1 评论 -
C语言.数组(二维数组)和指针混合学习
如上图int a[3][4]如何过a访问到元素[1][2]的值呢首先a为二维数组数组的地址,(a+1)为第二行的地址,*(a+1)相当于解了一层套,变成a[1],即为 第二行的地址,然后*(a+1)+2=a[1]+2即为第二行第3个元素的地址,*((*a+1)+2)=*(a[1]+2)即为a[1][2]的值https://blog.csdn.net/pl0020/articl...转载 2019-03-05 20:36:41 · 640 阅读 · 0 评论 -
C语言.enum枚举类型
enum的英文为:enumerate英 [ɪˈnju:məreɪt] 美 [ɪˈnu:məreɪt]vt. 列举,枚举,数在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI ...转载 2019-03-02 17:42:32 · 270 阅读 · 0 评论 -
C语言.const、static、volatile关键字修饰的作用
概念:const修饰了某一个变量之后,就不能通过该变量修改里面。使用场景:在形式参数中遇到const修饰某些变量int fun(const int a) // 一旦a被实参初始化了之后,就不能通过a修改a的值int fun(){}例子:#include <stdio.h>int main(){/* 当const关键词修饰普通变量const i...转载 2019-03-06 09:31:34 · 398 阅读 · 0 评论 -
C语言 openssl库 AES对称加解密 CBC模式 PKCS7Padding填充 256秘钥 带16偏移 base64编解码
最近学习对接平台 需要用到 AES BASE64 加密对接接口非常少的资料而且满足不了需要或者有bug,譬如无偏移,base解码超位数输出不正常等最后整理出如标题所示的结果希望能帮助到有需要的朋友 也给自己往后回顾用使用前需要安装openssl库使用方法:<./aes 数据> <例子:./aes test> <注意:有空格会被当成多个参数>功能介...原创 2019-09-21 22:33:30 · 7441 阅读 · 7 评论