C
c语言
春夏与冬
有田不耕仓禀虚,有书不读子孙愚。宝剑锋从磨砺出,梅花香自苦寒来。少壮不知勤学苦,老来方悔读书迟。
展开
-
系统调用函数lstat
【代码】系统调用函数lstat。原创 2024-04-09 22:16:46 · 121 阅读 · 0 评论 -
实现命令cp
【代码】实现命令cp。原创 2024-04-09 22:08:16 · 261 阅读 · 0 评论 -
strcpy的实现及使用
strcpy的实现及使用。原创 2024-03-20 11:14:35 · 153 阅读 · 0 评论 -
GetMemory 有关内存的思考题
因为GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。因为free(str)之后,str 成为野指针,if(str!因为GetMemory 返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原。请问运行Test 函数会有什么样的结果?篡改动态内存区的内容,后果难以预料,非常危险。请问运行Test 函数会有什么样的结果?本题和常见的交换a、b的值一样,需要用引用或指针作参数。请问运行Test 函数会有什么样的结果?请问运行Test 函数会有什么样的结果?原创 2024-03-13 11:04:26 · 477 阅读 · 0 评论 -
const关键字
const修饰函数,在函数内部不会修改类内的数据成员,不会调用其它非 const 成员函数。类成员函数中const:void fun() const;原创 2024-03-13 00:01:17 · 381 阅读 · 0 评论 -
gets与scanf
scanf函数接受数个参数,其中第一个参数是一个格式字符串,用于描述期望的输入类型。scanf(“%[^\n]”,s)表示表示遇到换行符\n时停止接收字符串。%s读取结束后会将空白符送回给输入缓冲区,但是gets直接将‘\n’转换成‘\0’,不再送回给输入缓冲区。// 从输入缓冲区读取第一个字符,不管是不是空白符。// 从输入缓冲区第一个非空白符读取,读到下一个空白符。gets 只有遇到换行符才结束输入,%s遇到空白符、TAB、\n就会结束。在这里输入的是行缓冲。%s不会读取最开始的空白符,gets会。原创 2023-12-07 14:38:28 · 324 阅读 · 0 评论 -
static关键字
静态成员函数不与对象相联系,因此不具有this指针,无法访问类对象的非静态数据成员,也无法访问非静态成员函数,只能调用静态成员函数。静态成员变量或静态成员函数,表示该变量或函数属于类,不属于该类的实例对象,是该类的所有对象共用。静态成员变量是类的成员变量,是类的所有对象中共享的成员,通常用于表示全局性质的数据,比如计数器、标识符等。静态局部变量和普通局部变量的作用域是一样的,都是针对局部使用,在函数外不能使用。static全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。原创 2023-11-27 11:42:02 · 446 阅读 · 0 评论 -
深(浅)拷贝
当结构体成员中含有Buf时,拷贝之后释放内存不会出现问题。但是如果结构体中含有指针变量的时候,浅拷贝:编译器仅仅拷贝了结构体的值,而没有创建新的内存空间,共享同一块内存空间。浅拷贝:拷贝指针变量的值 深拷贝:拷贝指针所指向内存空间。编译器只会copy指针变量,对应的内存空间不会分配。深拷贝:编译器会为拷贝的对象分配一定的内存空间。结构体中的深拷贝与浅拷贝。原创 2023-11-27 11:40:33 · 487 阅读 · 0 评论 -
存储区域 内存分配
malloc 和 free 以字节为单位进行内存管理,需要手动指定需要分配或释放的字节数,而 new 和 delete 以对象为单位进行内存管理,无需手动计算需要分配或释放的字节数,编译器会自动计算。malloc 返回的是 void* 类型的指针,需要显式地进行类型转换,而 new 返回的是分配对象的指针,不需要显式地进行类型转换。将应用程序加载到内存空间执行时,操作系统负责代码段、数据段和BSS段的加载,并在内存中为这些段分配空间。数据段属于静态内存分配,可以分为只读数据段和读写数据段。原创 2023-11-24 20:25:56 · 406 阅读 · 0 评论 -
字节序
计算机硬件有两种储存数据的方式:大端字节序big endian 和 小端字节序 little endian。大端字节序:低位放高地址,高位字节在低地址,地址空间0x2211,看到的和输出的一样。小端字节序:低位放低地址,高位字节高地址,地址空间0x1122,看到的和输出的相反。数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。原创 2023-11-24 20:21:55 · 442 阅读 · 0 评论 -
格式化输出
【代码】格式化输出。原创 2020-03-28 16:42:36 · 120 阅读 · 1 评论 -
C语言开发
比如一种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次读取或写入8个字节的数据,如软件能保证double类型的数据都从8倍数地址开始,那么读/写一个double类型数据就只需一次内存操作。函数的调用层次比较多时,就会形成一个连续的栈帧。当被调试程序开始执行以后,GDB就会存在一个选定的栈帧,通常情况下这个栈帧也就是当前下在执行的函数的栈帧,也可以通过GDB命令来选定其他栈帧。当一个新的函数被调用时,就会开成一个新的栈帧,而当一个被调用的函数返回后,就会从栈空间中去掉这个栈帧。原创 2020-03-21 23:22:27 · 1683 阅读 · 1 评论 -
C : 文件操作
fopenfopen打开文件后,fscanf, fprintf对文件操作;普通的scanf和printf在命令行界面操作FILE *fp1,*fp2; //定义文件指针类型fp1=fopen("input.in","r"); //用fopen函数以只读方式(r)打开输入文件input.in;fp2=fopen("output.out","w");//用fopen函数以写入方式(w)打开输出...原创 2020-02-17 11:13:06 · 110 阅读 · 0 评论 -
C : 字符串操作
返回值:如果dest > source,则返回值大于0,如果dest = source,则返回值等于0,如果dest < source ,则返回值小于0。返回值:若sub_str是str的子串,则返回sub_str在str的最后一次出现的地址;如果sub_str不是str的子串,则返回NULL。返回值:若sub_str是str的子串,则返回sub_str在str的首次出现的地址;作用:str中查找sub_str,在字符串中查找指定字符串最后一次出现的位置。作用:str中查找sub_str。原创 2020-02-04 15:07:23 · 157 阅读 · 1 评论 -
#ifndef #define #else #endif
//int数组返回其中的最大值int max(int num[], int n){ int max = 0; int i; for (i = 0; i < n; i++){ if (max < num[i]) max = num[i]; } return max;}//int double ch...原创 2020-05-08 22:52:08 · 129 阅读 · 1 评论 -
C : protocol
头文件:stdlib.h用 法:void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));参数:1 待排序数组首地址2 数组中待排序元素数量3 各元素的占用空间大小4 指向函数的指针,用于确定排序的顺序#include <stdio.h>#include <st...原创 2020-01-18 20:21:32 · 373 阅读 · 0 评论