c/c++基础
yandong
这个作者很懒,什么都没留下…
展开
-
反汇编一个c程序
方式一:使用gccgcc编译有四步走,预编译,编译,汇编,连接使用-S编译选项 gcc -S test.c会在当前目录下生成test.s的文件,该文件即是相应的汇编程序方式二:使用gdb首先编译时要是用-g编译选项 gcc -g ./test.c -o ./test接着运行gdb gdb ./test--(可执行文件)在gdb中使用 disassemble + frame(帧),即可查看相应代码段的汇编代码frame通常为一个函数名。方式三:使用objdump命令为 objdump -d test.o原创 2011-05-10 17:49:00 · 5304 阅读 · 0 评论 -
c语言的可变参数列表
#include#include/*计算平均值*/int fun(int n_value, ...){va_list value_arg;int count;int sum = 0;/*初始化,第一个参数是va_list, 第二个参数是最后一个有名子的参数*/va_start(value_arg, n_value);for(count = 0; count {/*第一个参数是va_list, 第二个参数是变量类型,该例中所有变量都是整形。在一些函数中需要判断,如printf使用格式列表*/sum += va原创 2011-05-15 08:41:00 · 658 阅读 · 0 评论 -
mmap的使用
<br />#include <sys/mman.h> /* for mmap and munmap */#include <sys/types.h> /* for open */#include <sys/stat.h> /* for open */#include <fcntl.h> /* for open */#include <unistd.h> /* for lseek and write */#include <stdio.h>#include <str原创 2011-05-15 08:43:00 · 544 阅读 · 0 评论 -
如何判断c语言函数参数的入栈顺序
编译运行这段代码:#include void foo(int x, int y, int z){ printf("x = %d at [%X]/n", x, (int)&x); printf("y = %d at [%X]/n", y, (int)&y); printf("z = %d at [%X]/n", z, (int)&z);}int main(int argc, char *argv[]){ foo(100, 200, 300);原创 2011-04-29 01:10:00 · 792 阅读 · 0 评论 -
c和c++中const的区别
<br /> <br />c和c++中的const从语义上讲没什么太大的区别,但毕竟两种语言设计思想还有很大区别,在实现的时候不尽相同。<br />请编译test.c 和test.cpp,看一点区别。<br /> <br /> <br /> <br />test.c<br /> <br />#include<stdio.h>void main(){ //网上认为这个会编译出错,但是却没有. //申请数组时,这个与编译器有关,请关注c99特性。 printf("I am c/n");原创 2011-04-29 01:18:00 · 621 阅读 · 0 评论 -
测试大端和小端的代码
<br />#include<stdio.h>#include<stdlib.h>#define CPU_VENDOR_OS "i686-pc-linux-gnu"intmain(int argc, char ** argv){ union { short s; char c[sizeof(short)]; }un; un.s = 0x0102; printf("%s: ", CPU_VENDOR_OS); if(sizeof(short原创 2011-04-29 01:26:00 · 1158 阅读 · 0 评论 -
一些c/c++基础题,看看是否每题都会?
1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?#include #include int main(){ while(1) { fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err"); sleep(1); } return 0; 参考答案:stdout和stderr是不是同设备描述符。stdout是原创 2011-04-29 01:37:00 · 746 阅读 · 0 评论 -
交换两个变量的值的方法
<br />方法一<br /> Val1 = Val1 ^ Val2;Val2 = Val1 ^ Val2;Val1 = Val1 ^ Val2;或 a^=b; b^=a; a^=b;方法二int a=1,b=2;a=a+b;b=a-b;a=a-b; <br />原创 2011-04-29 01:50:00 · 713 阅读 · 0 评论