#include<iostream>
#include<string.h>
using namespace std;
struct fraction{
int num;
int denom;
};
struct student{
char *name;
char suid[8];
int numUnits;
};
// // extern "C"
void intswap(int *ap,int *bp)//int版本
{
int tmp=*ap;
*ap=*bp;
*bp=tmp;
}
void allswap(void *vp1,void *vp2,int size)//泛型版本,用于于系统类型
{
char buffer1[size];
memcpy(buffer1,vp1,size);//无需显示指出复制的空间大小
memcpy(vp1,vp2,size);
memcpy(vp2,buffer1,size);
}
/*
比如int a=10; int *p=&a;
cout<<*p<<endl; 输出a的值,就是解引用操作。
*/
void *lsearch(void *key,void *base,int n,int elemszie)
{
for(int i=0;i<n;i++){
void *elemAddr=(char *)base+i*elemszie;//==base[i]
if(memcmp(key*elemAddr,elemszie)==0){
return elemAddr;//返回了要找的位置地址??没弄懂
}
}
return null;
}
int main()
{
// N1
// double d=3.1416;
// char ch=*(char *)&d;
// char ch2=(char)d;
// cout<<d<<endl;
// cout<<ch<<endl;
// printf("ok? %c",ch2);
//
//N2
// short s=45;
// double d=*(double*)&s;//以double形式解释
// cout<<d<<endl;
//N3
// fraction p1;
// p1.num=22;
// p1.denom=7;
// cout<<&(p1.num)<<endl<<&(p1.denom)<<endl;
// cout<<p1.num<<"&"<<p1.denom<<endl;
// ((fraction*)&(p1.denom))->num=12;
// cout<<p1.num<<"&"<<p1.denom<<endl;
// ((fraction*)&(p1.denom))->denom=33;//33被存到了pi.denom 后面(+4地址)的地方
// cout<<p1.num<<"&"<<p1.denom<<endl;
// cout<<((fraction*)&(p1.denom))[0].denom<<endl;
// ((fraction*)&(p1.num))->num=66;
// cout<<p1.num<<"&"<<p1.denom<<endl;
// ((fraction*)&(p1.num))->denom=77;
// cout<<p1.num<<"&"<<p1.denom<<endl;
//N4
// int array[10];
// array[0]=44;//array=&arrau[0];
// array[9]=100;
// array[5]=45;
// array[10]=1;
// for(int i=-10;i<=10;i++){
// array[i]=i;
// cout<<array+i<<ends;
// }
// cout<<endl<<array<<endl;
// int arr[5];
// arr[3]=4;
// ((short *)arr)[7]=2;
// cout<<arr[3]<<endl;
//N5
// student pupils[4];
// pupils[0].numUnits=21;
// pupils[0].name="Adam";
// pupils[3].name=pupils[0].name+6;
// strcpy(pupils[1].suid,"40415xx");
// strcpy(pupils[3].name,"123456");
//N6 c语言中的“泛型”
// int m1=10,m2=20;
// intswap(&m1,&m2);
// cout<<m1<<ends<<m2<<endl;
// allswap(&m1,&m2,sizeof(int));
// cout<<m1<<ends<<m2<<endl;
// double d=3.1416,e=2.71828;
// allswap(&d,&e,sizeof(double));
// cout<<d<<ends<<e<<endl;
// //x86的pc采用小端表示,可以正确的交换
// //大端的表示会让i增大
// int i=44;
// short s=5;
// allswap(&i,&s,sizeof(short));
// // allswap(&i,&s,sizeof(int));
// cout<<i<<ends<<s<<endl;
// 交换字符串(交换指针的指向)
// char *husband="John";
// char *wife="Ama";
// allswap(&husband,&wife,sizeof(char*));//sizeof(char*)=8(在我的电脑上);
// allswap(husband,wife,sizeof(char*));
// cout<<husband<<endl<<wife<<endl;
//N7 泛型的遍历查找
}
编程范式公开课的听课时敲的代码