C语言知识总结
来源:互联网 发布:网络贷款有风险 编辑:程序博客网 时间:2024/05/23 21:14
1. strlen与sizeof区别问题:
以下程序的输出结果
#include <stdio.h>void main(){ char * ptr="hello"; char str[]="hello"; printf("sizeof(pts) is %d\n", sizeof(ptr));//这里输出指针的大小 printf("sizeof(str) is %d\n", sizeof(str));//这里输出整个str占用的空间大小,包括‘\0’,故输出结果为:6
printf("strlen(ptr) is %d\n", strlen(ptr));//以下两个都是输出5,输出的是实际的数组或字符串的长度,不包括‘\0’ printf("strlen(str) is %d\n", strlen(str));}sizeof(pts) is 8
sizeof(str) is 6
strlen(ptr) is 5
strlen(str) is 5
2. 求一个数据是否是无符号数据
template<class T>void judge_unsigned(T a){int shift=8*sizeof(a)-1;cout<<"sizeof(a) is "<<shift+1<<endl;if( (a|(1<<shift)) >= 0)cout<<a<<"is unsigned data"<<endl;elsecout<<a<<"is signed data"<<endl;}void main(){long long a=4;judge_unsigned(a);unsigned int b=4;judge_unsigned(b);}
3. 不使用sizeof获取int,float或double所占用的字节数
使用宏定义来做
template<class T>//使用模板函数实现int get_size(T *a)//这里需要传进变量的地址{return int(a+1)-int(a);}//使用宏来实现,这里将其强制转换成char*类型,除此之外,还需好在宏中对变量取地址#define GetSize(val) ( (char *)(&val+1) - (char*)(&val) )void main(){int a[]={1,2,3};cout<<"a's size is: "<<get_size(&a)<<"define "<<GetSize(a)<<endl;double gd=4.5;cout<<"gd's size is: "<<get_size(&gd)<<"define: "<<GetSize(gd)<<endl;}
0 0
- c语言 知识总结
- C语言知识总结
- C语言知识总结
- C语言知识总结
- C语言知识总结
- C语言知识总结
- C语言知识总结
- c语言知识总结
- c语言面试知识总结
- c语言知识总结2
- 嵌入式C语言编程小知识总结
- 嵌入式C语言编程小知识总结
- C语言深度解剖 关键知识总结
- 嵌入式C语言编程小知识总结
- 雪*C语言核心知识总结一
- 雪*C语言核心知识总结二
- 雪*C语言核心知识总结三
- 雪*C语言核心知识总结四
- 《Java课程实习》日志(周一)
- C语言字符数组
- iOS NSData类型
- Android APK加壳技术方案
- about ContentProvider
- C语言知识总结
- Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件
- C++ Programming Tutorials_3翻译
- 【C语言】注释转换 ——C注释转换为标准C++语言注释
- C++类型转换
- 黑马程序员——网络编程
- 使用jquery操作session方法分享
- Linux中CPU与内存性能监测
- 晚来的博客