C程序设计Week10课上实例
2014-05-06 16:28
477 查看
1 一个神奇的程序
== 使用了 【指针】【强制类型转换】两项技术 或规则 ==== 里面的地址可能需要重新写一下下 ==
#include "stdio.h" main(){ int a = 3; *((int*)0X18FF44) = 8; printf("%d\n",a); }
2 变量review
== 该程序很简单,但确是最需要理解的 ==#include "stdio.h" main(){ int a = 5; printf(" a = %d \n", a ); printf(" size of a is %d\n", sizeof(a) ); printf(" address of a is 0x%x\n", &a ); }
3 一个错误的程序
== 想想为什么 ==#include "stdio.h" void main(){ int * a; *a = 10; printf(" dereference of a is %d\n",*a); }
4 数组的另类理解
== int a[4] ==== a的内容是什么?a的大小是多少 ?==
== 认真体会 ==
#include "stdio.h" void pz(int arr[]){ printf("size function: %d\n",sizeof(arr)); } void main(){ int a[]={1,2,3}; printf("a=0x%x \n",a); printf("sizeof a is %d \n",sizeof(a)); pz(a); }
5 指针与数组
== 两个知识点 【指针指向数组】【指针加上一个整数】==#include "stdio.h" #define SIZE 4 main(){ short index; short dates[SIZE]; short *pti=dates; // pointer to integer double bills[SIZE]; double *ptf=bills; // pointer to float printf("%20s(%dB) %10s(%dB)\n", "short",sizeof(short),"double",sizeof(double)); for( index = 0 ; index < SIZE ; index ++ ) printf("pointers + %d: %10p %10p\n", index, pti+index, ptf+index ); }
另一个例子
#include "stdio.h" void main(){ int a[]={10,3,9,7}; for(int i=0;i<sizeof(a)/sizeof(int);i++) printf("the value of a+%d : %d\n",i,*(a+i)); int *pa1,*pa2,*pa3; pa1 = a; pa2 = a+2; pa3 = &a[3]; printf("*pa1=%d,*pa2=%d,*pa3=%d\n",*pa1,*pa2,*pa3); printf("pa1=%p,pa2=%p,pa3=%p\n",pa1,pa2,pa3); printf("pa2-pa1 = %d\n",pa2-pa1); }
6 理解函数中的传值、传地址
#include "stdio.h" void change(int a){ a=2; } void main(){ int a=1; change(a); printf("a is %d\n",a); }
#include "stdio.h" void change(int* pa){ *pa=2; } void main(){ int a = 1; int* pa= &a; change(pa); printf("*pa is %d\n",*pa); }
7 当函数的参数为指针、为数组时
#include "stdio.h" void changeArray(int ar[]){ ar[1] = 88; } void changePointer(int *pa){ *(pa+2) = 101; } void main(){ int a[]={1,2,3}; changeArray(a); changePointer(a); for(int i=0;i<sizeof(a)/sizeof(int);i++) printf("a[%d]=%d\n",i,a[i]); }
8 指向函数的指针
#include "stdio.h" void welcomeToBaoding(){ printf("welcome to Baoding\n"); } void welcomeToXiAn(){ printf("welcome to XiAn\n"); } void main(){ void (*welcome)(); welcome = welcomeToBaoding; welcome(); welcome = welcomeToXiAn; welcome(); }
9 利用指针动态分配内存
#include "stdio.h" #include "stdlib.h" void main(){ int length ,i; int *p; printf("input the num :"); scanf("%d",&length); p = (int*) malloc(length*sizeof(int)); *p=1; *(p+1)=1; for(i =2;i<length;i++) *(p+i) = *(p+i-2) + *(p+i-1); for(i = 0;i<length;i++) printf("fabonacci of %d is %d\n",i,*(p+i)); }
相关文章推荐
- C程序设计week10作业
- week10:PHP面向对象的程序设计之10大知识点
- week 10 课上实例
- Machine Learning - XVIII. Application Example Photo OCR应用实例-照片OCR(Week10)
- Machine Learning - XVIII. Application Example Photo OCR应用实例-照片OCR(Week10)
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- CPU卡程序设计实例(四)CPU卡处理流程
- java基本的程序设计结构之printf,NumberFormat,java.util.Scanner相关的知识点与实例
- CPU卡程序设计实例(十九)取响应数据命令
- 泛型程序设计实例(二)
- CPU卡程序设计实例(二十二)CPU卡内部认证
- Java 打印程序设计实例
- Leetcode:23. Merge k Sorted Lists (week 10)
- Libevent实例之系统密码保护程序设计
- PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
- PHP面向对象程序设计之类常量用法实例
- win10+qt5.3+opencv2.4.9+vs2013环境配置及运行实例
- Oracle10gR2 Dataguard: 建立一个ASM实例存储的物理备库
- Machine Learning - XVII. Large Scale Machine Learning大规模机器学习 (Week 10)
- unix网络编程各种TCP客户-服务器程序设计实例(二)