随笔分类 - C Primer Plus
C Primer Plus
摘要://定时器 #include #include #include int main(int num, char* arg[]){ //arg数组存放指针 //printf("个数:%d 参数值1:%s 参数值2:%s 参数值:%s\n",num,arg[0],arg[1],arg[2]); if(num!=2){ printf("必须输入一个数字:%s\n",arg[0]); ...
阅读全文
摘要:1:指针数组:就是这个数组里面的元素全部是指针;即地址 如: int a[] = {1,2,3,4,5}; int *p[] = {&a[0],&a[1],&a[2],&a[3],&a[4]};//全部元素都是地址 2:数组指针: 指向数组的指针叫数组指针 int (*p)[4]; //数组指针也就
阅读全文
摘要:1.使用函数指针数组来实现计算器 2.通过函数指针变量来调用对应的函数
阅读全文
摘要:从上面来看;add函数参数入栈顺序 从左到右LInux 和Windows不一样 进一步发现,Pascal语言不支持可变长参数,而C语言支持这种特色,正是这个原因使得C语言函数参数入栈顺序为从右至左。 具体原因为:C方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数。 通过栈堆分析可知,自左向
阅读全文
摘要:函数名和数组名不允许修改其地址;因为是常量; 函数指针:返回的是函数的类型数据 指针函数:返回的是一个指针地址 函数名和数组名一样都是一个指针;即是地址
阅读全文
摘要:在C语言中,对变量的存储类型说明有以下四种: auto 自动变量 (动态存储) register 寄存器变量(动态存储) extern 外部变量(静态存储) static 静态变量(静态存储) 所谓存储类型是指变量占用内存空间的方式,也称为存储方式。 这4种类型 不允许重复定义 如: extern
阅读全文
摘要:变量从高到低的优先级以下面展示: 1.文件作用域;变量在全局从文件开头到结尾一直有效即全局变量 2.函数作用域也称局部变量 3.代码块作用域;用{}花括号内的定义的变量;都是在代码块{}中有效 如:if while dowhite for 循环的代码块 4.函数原型也就是函数的声明作用域;那变量只在
阅读全文
摘要:总结: 常量指针:常量的值即存储单元的值不可以修改;地址可以修改。 指针常量:指针地址不可以修改; 指针指向的存储单元可以被修改。 指向常量的指针常量:地址和存储单元的值都不可以被修改。
阅读全文
摘要://数组变量名;就是一个地址;就是数组首元素的地址#include int main(void) { int age[5] = {10,50,100,22,44}; //正确 //int * p = &age[0];//不能赋值age数组名是常量不允许赋值 //正确 int * p = age;//数组名就是一个地址;就是数组a[0] 的地址;即是数组的首地址 printf...
阅读全文
摘要:#include int main(void) { int a=10; int *p = &a; *p = 89; printf("变量值a=%d a=%d\n", a,*p);//0x7fff8af18554 printf("指针地址p=%p p=%p\n",p,&a);//0x7fff8af18554 printf("指针地址p=%#lx p=%#lx\n"...
阅读全文
摘要:#include int main(void){ int age[5] = {5,6,7,20,99}; return 0; } //转换后 /*(gdb) p &age[0] $20 = (int *) 0x7fffffffe330 对应a[0]的地址 (gdb) p &age[1] $21 = (int *) 0x7fffffffe334 (gdb) p &age[2] $...
阅读全文
摘要:ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100
阅读全文
摘要:本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调
阅读全文
摘要:输出结果 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1
阅读全文
摘要:#include int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置; */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位...
阅读全文
摘要:#include /* 十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方; 在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15 例如:CE=12*16^1+14*16^0=192+14=206 */ //右旋转把第一位 放到最后 0x2345 => 0x3452 num左移1位0x3450;即1个16进制位等于4个...
阅读全文
摘要:一:无参函数 类型说明符 get(){ //函数体 } 二:无参函数 类型说明符 getname(int a,int b){ //函数体 } 三:类型说明符包括: int ,char,float,double, void, static 四、函数的调用 直接使用函数名调用;实参(常量,变量,表达式,
阅读全文
摘要:一、函数的特点: 全部都是全部函数构成 面向过程的;是函数式语言 函数的调用 是按需调用 封装包含 二、程序中函数的作用: 可以使用函数使程序变的简短 和 清晰 提高代码重用性 提高开发效率 有利于程序维护 三、函数的划分: 库函数:系统提供 用户定义的函数:由用户声明和定义的函数 四、函数的返回类
阅读全文
摘要:#include int main(void){ //利用移位运算符 把十进制转换成二进制 int c; printf("输入数字:");//8 scanf("%d",&c); //最高位和次高位都要移动到最低位 //补码:00 0000 1000 //逻辑右移>>:00 0000 1000 //printf("%d",8=0;i--){ int bit = (c>>...
阅读全文
摘要:#include int main(void){ int a,n; printf("pls input number:\n"); scanf("%d",&a); n = sizeof(a); int i,c=0; char j[8]; i = a/2; while(i!=0){ j[c]= a%2; a = a/2; c = c+1; } while(c>0...
阅读全文
浙公网安备 33010602011771号