联合 枚举 双指针 万能指针void*
来源:互联网 发布:相册网站设计源码 编辑:程序博客网 时间:2024/06/11 00:16
1.联合
1.1 联合是程序员自己创建的一种数据类型
typedef union U{ //联合中的所有成员变量共用一块存储空间 int x; int y; int z;};... U u1; NSLog(@"%lu",sizeof(u1)); u1.x=10; NSLog(@"%d,%d,%d ",u1.x,u1.y,u1.z); //(输出结果:10,10,10)其他两个也会为10...
typedef union { char ch[4]; int x; }Data;...Data d; d.x=0x41424344; //每两个16进制数占4个字节,按小端存储 。 for(int i=0;i<4;i++){ printf("%c ",d.ch[i]); //ASCLL码, 输出结果(D C B A) } printf("\n"); ...
2.枚举
2.1 也是程序员自己创建的一种数据类型
typedef enum{ MONDYA=100,TUESDAY,WEDNESDAY,THURDAY=200,FRIDAY,SATURDAY,SUNDAY,}Weed; //常量必须为整数,可以指定值,不指定的值按前边指定的值依次+1;void show(Weed type){ switch (type) { case MONDYA: //增加代码可读性 NSLog(@"星期一"); break; case TUESDAY: NSLog(@"星期二"); break; case WEDNESDAY: NSLog(@"星期三"); break; case THURDAY: NSLog(@"星期四"); break; case FRIDAY: NSLog(@"星期五"); break; case SATURDAY: NSLog(@"星期六"); break; case SUNDAY: NSLog(@"星期日"); break; }int main(){ @autoreleasepool { NSLog(@"%d",MONDYA); / NSLog(@"%d",TUESDAY); NSLog(@"%d",SUNDAY); // 输出结果(100 101 203) show(MONDYA); //输出结果 (星期一) } return 0;}
3.双指针
3.1 指针的指针
3.2 值传递的本质是在函数体内修改形参本身
3.3地址传递的本质是在函数中修改形参指向的变量
void get(char** str){ *str ="abcd";} int main(){ @autoreleasepool { int x=10; int* px=&x; int** ppx=&px; **ppx=20; NSLog(@"%d",x); //输出结果(20) char *msg=nil; get(&msg); printf("%s\n",msg); //输出结果(abcd) } return 0;}
4.万能指针void*
4.1 万能指针,可以指向任意类型的变量,
4.2 在使用时,需先将其转换回指向的变量的类型
int main(){ @autoreleasepool { int x=10; int *px=&x; //同一类型的指针只能指向同一类型的变量 NSLog(@"%d",*px); double *pd=&x; //不用类型的指针,不能指向不同的类型的变量 NSLog(@"%lg",*pd); //输出垃圾值 void *p=&x; //定义万能指针 double d=3.14; p=&d; //void* 类型的指针可以指向任意类型的变量 NSLog(@"%lg",*(double *)p); //万能指针在引用其指向的变量时,需先将其转换回指向的变量的类型 } return 0;}
//编写一个函数,用万能指针做形参,打印任意类型的变量值typedef enum{ INT,FLOAT,DOUBLE,CHAR,}Type;void print(void *p,Type type){ switch (type) { case INT: NSLog(@"%d",*(int*)p); break; case FLOAT: NSLog(@"%g",*(float*)p); break; case DOUBLE: NSLog(@"%lg",*(double*)p); break; case CHAR: NSLog(@"%c",*(char*)p); break; } }int main(){ @autoreleasepool { int a=10; char b='a'; float c=3.14; print(&a,INT); print(&c, FLOAT); print(&b,CHAR); }}
0 0
- 联合 枚举 双指针 万能指针void*
- 联合、枚举、双指针、void*、函数指针
- void指针 万能指针
- void指针 万能指针
- c++ 万能指针-void
- 万能指针: void*
- 万能指针void
- 妙用void *型指针(万能指针|泛型指针)
- 万能指针void *的今世今生
- 指针、结构、联合和枚举
- 结构体、联合、枚举与高级指针
- 万能指针
- void指针
- void指针
- void指针
- void指针。。。
- void指针
- void* 指针
- linux基础命令大全
- 【adb】 pull和push的正确姿势
- BZOJ1646: [Usaco2007 Open]Catch That Cow 抓住那只牛
- 学习jQuery选择器
- git clone WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- 联合 枚举 双指针 万能指针void*
- vs2010中文旗舰版,vs2013,vs2015企业版激活秘钥
- synchronized 对象锁
- 两个二进制中不同位的个数
- JS: 如何计算一个月有多少天
- c 差缺补漏
- runtime运行时
- maven资料合集
- Spring Data Redis