char函数

关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试

倖福魔咒の 提交于 2019-12-27 17:08:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> csdn上这个写的挺好的,总的来说该参数是用来在命令行编译程序的时候用的,argc是整型,用来统计程序运行时发送给main函数的命令行参数的个数,argv是字符串数组,用来存放指向字符串参数的指针数组。 https://blog.csdn.net/dgreh/article/details/80985928 来源: oschina 链接: https://my.oschina.net/u/4433424/blog/3148195

C++ 内存解析

核能气质少年 提交于 2019-12-27 12:16:20
一、内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在 程序编译的时 候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。 二、三者之间的区别我们通过代码段来看看对这样的三部分内存需要怎样的操作和不同,以及应该注意怎样的地方。 例一:静态存储区与栈区 char* p = “Hello World1”; char a[] = “Hello World2”; p[2] = ‘A’; a[2] = ‘A’; char* p1 = “Hello World1”;    这个程序是有错误的, 错误发生在p[2] = ‘A’这行代码处 ,为什么呢? 是变量p和变量数组a都存在于栈区的

C++输入输出流

ぃ、小莉子 提交于 2019-12-27 07:21:14
输入输出流 1. 用控制符输出格式,例: 1 #include <iostream> 2 #include <iomanip>//利用控制符输出必须包含iomanip头文件 3 using namespace std; 4 int main() 5 {int a; 6 cout<<"input a:"; 7 cin>>a; 8 cout<<"dec:"<<dec<<a<<endl; //以十进制输出 9 cout<<"hex:"<<hex<<a<<endl; //十六进制 10 cout<<"oct:"<<setbase(8)<<a<<endl; //八进制 11 char *pt="China"; 12 cout<<setw(10)<<pt<<endl; //宽度为10,China前补上5个空格 13 cout<<setfill('*')<<setw(10)<<pt<<endl; //China前补上5个* 14 double pi=22.0/7.0; 15 cout<<setiosflags(ios::scientific)<<setprecision(8);//科学记数法,8位小数 16 cout<<"pi="<<pi<<endl; //输出pi 17 cout<<"pi="<<setprecision(4)<<pi<<endl; //改为4位小数 18 cout<<"pi=

C/C++——C语言库函数大全

痴心易碎 提交于 2019-12-27 03:12:05
本文转载自:https://blog.csdn.net/yanfan0916/article/details/6450442###; 1. 分类函数: ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace

C/C++中 typedef 的深入理解

江枫思渺然 提交于 2019-12-27 02:57:42
大二的时候学数据结构总是用到typedef这个关键字,似乎都很熟练,但是,真的就理解了typedef真正的含义了吗 C++/C是真的博大精深!!!!!! 先把typedef的用法都列出来,看看我们是不是都理解: typedef int BOOL; //就是简单的将int类型去一个别名BOOL //然后我们可以用BOOL来定义一个整型变量:BOOL a = 13; typedef long double REAL; //定义了一个长整型,双精度的类型的别名REAL //这其实最高精度的类型了,但是有的平台不支持long,甚至不支持double,这时候可以用float替代 当我们定义结构体的时候: struct xx { int x; int y; int z; }; 当我们调用这个结构体的时候: struct xx x1={123,456,789}; struct xx x2; 会不会感觉少了那么点感觉,因为这里 struct xx 才是一种类型, 类似于struct xx等于int 然后我们再来看这样的定义: typedef struct xx { int x; int y; int z; }xxx; 调用的时候: xxx x1={123,456,789}; xxx x2; 就像定义整型变量一样方便 这里的意思就是 将stuct xx这个类型定义了一个别名叫做xxx 你以为你懂了

深入理解C语言内存管理

北慕城南 提交于 2019-12-27 02:10:21
之前在学Java的时候对于Java虚拟机中的内存分布有一定的了解,但是最近在看一些C,发现居然自己对于C语言的内存分配了解的太少。 问题不能拖,我这就来学习一下吧,争取一次搞定。 在任何程序设计环境及语言中,内存管理都十分重要。 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手。现在有一个简单的C源程序hello.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 int var1 = 1; 4 5 int main(void) { 6 int var2 = 2; 7 printf("hello, world!\n"); 8 exit(0); 9 } 经过gcc hello.c进行编译之后得到了名为a.out的可执行文件 [tuhooo@localhost leet_code]$ ls -al a.out -rwxrwxr-x. 1 tuhooo tuhooo 8592 Jul 22 20:40 a.out ls命令是查看文件的元数据信息 [tuhooo@localhost leet_code]$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs),

攻防世界pwn之新手练习区

核能气质少年 提交于 2019-12-27 01:35:04
0x00 get_shell 题目描述:运行就能拿到shell呢,真的 from pwn import * io = remote('111.198.29.45','36389') io.interactive() 0x01 CGfsb 题目描述:菜鸡面对着pringf发愁,他不知道prinf除了输出还有什么作用 1.基本信息: Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000) 2.ida查看伪代码,按照题目的提示在主函数找到了printf函数,可以明显的看到ptintf没有按照标准格式 printf("<格式化字符串>", <参量表>) 书写,存在格式化字符串漏洞,pwnme的值等于8的时候可以得到flag puts("your message is:"); printf(&s); //漏洞点 if ( pwnme == 8 ) { puts("you pwned me, here is your flag:\n"); system("cat flag"); } printf函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数,根据 C 语言的调用规则

c语言程序设计(19)

≡放荡痞女 提交于 2019-12-26 23:43:30
字符串 字符数组 1、使用字符串初始化字符数组 char ch[]=“hello world” scanf("%s",ch); printf("%s",ch); 2、字符串处理函数 gets(ch); 指针变量指向字符串 char * str=“hello” //使用字符串常量对字符指针进行初始化 str=str+2; str=“world” 等价于 char * str; str=“hello” char ch[]=“hello” char ch[10]; ch=“hello”//错误 char * str=ch; 字符串在c内存中都是以数组的形式存放 char * mystrcat(char ch1[],char * ch2) { int i,j; for(i=0;;i++) { if(ch1[i] ’\0’) break; } for(j=0;;j++) { if(ch2[j] ’\0’) break; } for(y=0,x=i;y<=j;x++,y++) { ch1[x]=ch2[y]; } return ch1; } char * mystrcat(char * ch1,char * ch2) { int i,j; for(i=0;;i++) { if( (ch1+i)==’\0’) break; } for(j=0;;j++) { if( (ch2+j)==’\0’)

libpcap抓取数据包

时光总嘲笑我的痴心妄想 提交于 2019-12-26 21:22:51
libpcap是数据包捕获函数库。该库提供的C函数接口可用于需要捕获经过网络接口数据包的系统开发上。libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。这个库为不同的平台提供了一致的编程接口,在安装了libpcap的平台上,以libpcap为接口写的程序,能够自由的跨平台使用。 linux下libpcap的安装:sudo apt-get install libpcap-dev linux下gcc编译程序:gcc my_pcap.c -lpcap 执行程序的时候如果报错: no suitable device found,以管理员权限运行程序即可,sudo ./my_pcap libpcap的抓包框架: 头文件: #include <pcap.h> 在/usr/local/include/pcap目录下 1.查找网络设备 char *pcap_lookupdev(char *errbuf) 该函数用于返回可被 pcap_open_live()或pcap_lookupnet()函数调用的网络设备名(一个字符串指针)。如果函数出错,则返回NULL,同时errbuf中存放相关的错误消息。 2.获得指定网络设备的网络号和掩码 int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char

main()在C和C ++中应该返回什么?

落爺英雄遲暮 提交于 2019-12-26 19:27:12
在 C 和C ++中定义 main () 函数的正确(最有效)方法是什么— int main() 或 void main() —为什么? 如果 int main() return 1 或 return 0 ? 此问题有很多重复项,包括: C的 main() 函数的有效签名是什么? main() 函数的返回类型 void main() 和 int main() 之间的区别? C ++中 main() 的签名 main() 的正确声明是什么? —对于C ++,确实有很好的答案。 C语言中 main() 函数的样式 C语言中 main() 方法的返回类型 int main() 与 void main() 有关: C ++ — int main(int argc, char **argv) C ++ — int main(int argc, char *argv[]) char *envp[] 作为 main() 的第三个参数是否可移植? int main() 函数是否必须在所有编译器中返回一个值? 为什么C和C ++中的 main() 函数的类型留给用户定义? 为什么 int main(){} 编译? C ++ 14中 main() 法律定义? #1楼 返回0应该告诉程序员程序已成功完成工作。 #2楼 标准C —托管环境 对于托管环境(这是正常的环境),C11标准(ISO / IEC