C语言
szplzx1314
这个作者很懒,什么都没留下…
展开
-
C++可变参数宏
C++可变参数宏原创 2023-04-28 11:43:42 · 173 阅读 · 0 评论 -
C语言笔记第十四天
好啦,最后一天了,C语言就结束了.之后在简单的说下Linux,然后就C++吧.结构体强制类型对齐#pragma pack(n) n为2的n次方与默认选择对齐方式取最小值其实实际上是牺牲时间换空间,这个是有用的.(结构体内类型的数据也会使结构体内存发生变化)位段(位域)只有unsigned int 和 unsiged charstruct BitField{占两位unsigned int a:2;占四位unsigned char b:4;}相邻位域可..原创 2021-09-17 12:46:41 · 82 阅读 · 0 评论 -
C语言笔记第十三天
字符串节取例子#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>int main(){ char mag[1024] = "[12:13.45][23:34.54]总有一天你哭过的事会笑着说出来"; int m = 0, m2 = 0, s = 0, s2 = 0; char lyric[1024] = ""; sscanf(mag, "%*c%d%*c%d%*5s%d原创 2021-09-16 21:19:11 · 126 阅读 · 0 评论 -
C语言笔记第十二天
两个指针相加无意义指针相减可以可到元素个数int arr[3][4],(*p)[4] 其中arr和p是等价的原创 2021-09-15 19:50:50 · 75 阅读 · 0 评论 -
C语言笔记第十天
其实我原计划是七天搞定的,真没想到十天也没搞定.二维数组做参数#include <stdio.h>void twoArrayAsArgument(int arr[3][4], int row, int col);//二维数组传递时数组指针void twoArrayAsArgument2(int (*arr)[4], int row, int col);int main(int argc, char* argv[]){ //二维数组做函数参数 int arr[3]..原创 2021-09-10 20:50:58 · 48 阅读 · 0 评论 -
C语言笔记第九天
多维数组#include <stdio.h>int main(int argc, char** argv){ //任何数组实际上在物理内存上都是一维的,之所以我们把它分为一,二,三维数组是在逻辑层面上 //对了数组是一段连续的空间,这个居然一直没有说过!!! int arr[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }; //这个说没说过 忘记了 反正说下准没错 //&arr arr &arr[0][0]地址..原创 2021-09-10 14:46:28 · 56 阅读 · 0 评论 -
C语言笔记第八天
强制类型转换要求取一个字节后的两个字节(0x11223344,要取0x2233)#include <stdio.h>int main(int argc,char** argv){ int num = 0x11223344; //指针与变量建立链接 int* p = # //指针p强转成char*步长为一个字节,加一向前走一个字节 //强转成short*步长为两个字节 //最后在对其解引用,得到地址的内容 printf("%#x\n", *((sh原创 2021-09-08 09:15:04 · 117 阅读 · 0 评论 -
C语言笔记第七天(指针)
目录指针概述指针的取值范围(步长)指针+1指针概述#include <stdio.h>int main(){ //物理内存:真是的内存 //虚拟内存:系统虚拟的内存(映射) //指针操作的时虚拟内存(大部分情况下) //32位系统的寻址范围 0x00 00 00 00 到 0xff ff ff ff(一个十六进制四位,两个十六进制一字节) // 32/8=4 一字节8位 32位也就是四个字节,指针大小的由来 //0xff ff ff ff也就是3.原创 2021-09-07 21:41:17 · 107 阅读 · 0 评论 -
C语言笔记第七天(数据的存储)
把这个单独分出来吧其实原计划是一个星期把C弄完,没想到今天就是第七天的,才要开始指针.指针就是地址嘛,也就是要说到内存.所以先说一下:源码,反码,补码其实只要记住一句话就可以,计算机内存储的是补码,这个知识点在<<计算机组成原理中>>如果是做行四门功课必看.这特别特别重要.正数的源码,补码正数的源码和补码一样+2 源码:0000 0010 反码:0000 0010 补码:0000 0010负数的源码,补码负数从源码到补码,符号位不变...原创 2021-09-07 14:09:13 · 89 阅读 · 0 评论 -
C语言笔记第六天
编译步骤预处理:gcc -E hello.c -o hello.i 头文件展开 宏替换(其实如果C只是过度阶段之后C++的话宏真的无关紧要) 定义宏:#define 宏名 宏 取消宏:#undef 宏 宏替换作用域为当前文件 条件编译 #if #endif 删除注释编译:gcc -S hello...原创 2021-09-06 20:27:49 · 76 阅读 · 0 评论 -
C语言笔记第五天
内存分区大部分人都说内存分区这块了解一下就好,但是个人感觉这块是最重要的啊,C语言玩的就是内存啊.未运行的可执行程序内存分区bss区:未初始化的全局变量 静态变量data区:以初始化的全局变量 静态变量text区:二进制指令运行中的可执行程序内存分区堆区:由malloc ralloc calloc 定义的变量栈区:局部变量 形参 返回值 返回值:字节数较大的返回值会在栈区,小的会在寄存器上,具体大小好像是4B,不过个人简单的认为内置类型在寄存器上,自定义类型...原创 2021-09-06 02:01:56 · 59 阅读 · 0 评论 -
C语言笔记第四天
一维数组#include <stdio.h>int main(int argc, char** argv){ //一维数组 //定义数组大小时只能用常量,不过据说c99支持变量了,一直也没有试过,代码嘛可读性可移植性都是首要的 //定义 int arr[5] = { 1,2,3,4,5 }; int arr2[] = { 1,2,3,4,5 }; //这种也不推荐 int arr3[5] = { [0] = 1,[1] = 2,[2] = 3,[3] = 4,[4] =原创 2021-09-05 00:01:34 · 49 阅读 · 0 评论 -
C语言笔记第三天
运算符优先级#include <stdio.h>int main(){ //逗号运算符 //逗号运算符优先级最低,10先结合占位符 printf("%d\n",10, 20, 30); //10 //加上括号是一个整体,自左向右最后结果为30 printf("%d\n", (10, 20, 30)); //30 //其实运算符优先级很重要,但是写代码可读性在99%的情况下更重要 //代码虽然是给机器用的,可始终还是给人看的,尽可能的用()使运算顺序一目了然 //对于原创 2021-09-03 19:48:29 · 44 阅读 · 0 评论 -
C语言笔记第二天
转义字符#include <stdio.h>int main(){ //转义字符 //\n换行符 printf("-------\n"); //横向制表符 printf("------\t-------\t----\t\n"); printf("-------\t-----\t------\t\n"); //回车 可以作为类似输入 光标移动到行首 //printf("输入姓名:\n"); //printf("_______\r"); //char str[原创 2021-09-02 22:33:16 · 82 阅读 · 0 评论 -
C语言笔记第一天
circle area#include <stdio.h>#include <stdlib.h>//宏定义 将PI替换成3.14#define PI 3.14double circleArea(double radius){ return PI * radius * radius;}int main(){ printf("hello world\n"); //值得一说的是,double和float相比无论是精度还是执行效率都要高哦原创 2021-09-01 20:26:54 · 80 阅读 · 0 评论 -
C语言笔记
也不知道咋想的,突然间就想真正的从零开始回炉从造。可能是因为这个时代一切都太快了吧!国际惯例hello world#include <stdio.h>int main(int argc,char**argv){ printf("Hello World!\n"); //带阻塞的函数可以阻止控制台窗口一闪而过,例如:// while(1);// system("pause");// getchar(); return 0;}原创 2021-09-01 02:47:09 · 121 阅读 · 0 评论