![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++系列
C/C++语言教程
安全狮
这个作者很懒,什么都没留下…
展开
-
程序设计中的递归(C语言为例)
首先看一段代码: #include<stdio.h> int f(int n) { if (n == 0) return 0; else return f(n - 1) + n; } int main() { printf("%d", f(5)); return 0; } 在此程序中定义了一个函数f,此函数的作用呢是一个简单的判断,当n等于0的时候则返回0,如果不为0的时候呢则返回f(n - 1) + n。大部分人对递归难理解可能就是在于这里使用了一个函数,那就是自己。原创 2020-11-25 00:50:17 · 350 阅读 · 0 评论 -
使用C语言创建套接字及连接
两部分代码注释已全部给出,扩展的话也比较容易。 上代码: 服务端 #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <winsock2.h> #pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll int main() { //初始化 DLL WSADATA wsaData; WSAStartup(MAKEWORD(2, 2原创 2020-07-23 13:04:15 · 1541 阅读 · 2 评论 -
分享一段用C语言获取系统jmp esp地址的代码
#include <windows.h> #include <stdio.h> void main() { BYTE* ptr; int position, address; HINSTANCE handle; BOOL isOver = FALSE; handle = LoadLibrary(L"user32.dll"); if (!handle) { printf(" load dll erro !");原创 2020-07-20 23:51:14 · 457 阅读 · 0 评论 -
C/C++中动态分配内存(堆)
两个例子: //C语言 int intMalloc() { int *p; p=(int *)malloc(sizeof(int)*10);//动态分配p内存10个整形大小 //p=calloc(5,sizeof(int)); *(p+1)=1;//给内存地址一个值 for (size_t i = 0; i < 10; i++) { printf("%d\n",*(p+i)); } return 0; } //C++原创 2020-07-20 20:22:33 · 121 阅读 · 0 评论 -
关于C语言几个操作内存的函数(此文章会被更新)
1.ssize_t write(int fd,const void*buf,size_t count); 用于将数据写入到文件描述符对应的文件 参数介绍: fd是文件描述符(输出到command line,就是1) buf:通常是一个字符串,需要写入的字符串 count:是每次写入的字节数 返回值: 成功:返回写入的字节数 失败:返回-1并设置errno ps: 写常规文件时,write的返回值通常等于请求写的字节数count, 而向终端设备或者网络写时则不一定 示例代码 write(1,"Hell原创 2020-07-19 20:36:27 · 468 阅读 · 0 评论 -
C语言指针的简单应用
指针是什么 指针在C/C++语言中是一个重要的概念,他指向了一段内存空间的地址,而指针占用的内存空间是相同的,他仅仅将自己保存了一个内存地址。 解决问题 在平常写程序的时候都离不开函数的相互调用,如果在调用的时候我们直接参数设置为我们的变量,这将会新开辟一段内存空间,而这样是不行的,因为一个数据在内存里重复放几遍,这样就会占用空间,导致程序运行不顺畅。如果我们在main函数中定义了一个变量,char c[]=“Hello”,当我们要将c传给其他函数是如果直接将c传过去则其他函数就会重新分配一段空间,这样如果原创 2020-07-15 20:23:10 · 561 阅读 · 0 评论