博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
彻底弄清几乎每次必考的sizeof关键字(笔试面试常考)
阅读量:4142 次
发布时间:2019-05-25

本文共 2901 字,大约阅读时间需要 9 分钟。

       下面看看几乎每次笔试都会碰到的sizeof关键字.

 

#include
using namespace std;struct A{};struct B{ char c; int i;};struct C{ int i; char c;};struct D{ char c1; char c2; int i;};struct E{ int i; char c1; char c2;};struct F{ char c1; int i; char c2;};union G{ char c1; int i; char c2; double d;};class H{};class I{private: int i;};class J{public: virtual void display();};class K{private: int i;public: void display();};class L{private: int i;public: virtual void display();};class M{private: int i; int j;public: virtual void display();};class N{private: static int i;};class O{private: static int i; int j;};void fun1(char str[20]){ cout << sizeof(str) << endl;}void fun2(char a[10][9]){ cout << sizeof(a) << endl;}int main(){ char *p1; cout << sizeof(p1) << endl; // 4 int *p2 = new int[100]; cout << sizeof(p2) << endl; // 4 delete [] p2; float *p3; cout << sizeof(p3) << endl; // 4 double ******p4; cout << sizeof(p4) << endl; // 4 char str[100] = "abcdefg"; fun1(str); // 4 (fun1中的形参str是指针变量) cout << sizeof(str) << endl; // 100 (str的容量为100) cout << sizeof(*str) << endl; // 1 (*str是一个字符数据) cout << strlen(str) << endl; // 7 (字符串str的长度) char str1[] = "abcdeofg"; //(里面是字符'o') cout << sizeof(str1) << endl; // 9 cout << strlen(str1) << endl; // 8 char str2[] = "abcde0fg"; //(里面是字符'0',不等于'\0') cout << sizeof(str2) << endl; // 9 cout << strlen(str2) << endl; // 8 char str3[] = "abcde\0fg"; cout << sizeof(str3) << endl; // 9 cout << strlen(str3) << endl; // 5 char str4[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'}; cout << sizeof(str4) << endl; // 7 cout << strlen(str4) << endl; // 13 (数值不确定) char str5[] = {'a', 'b', 'c', 'd', 'e', 'o', 'f', 'g'}; cout << sizeof(str5) << endl; // 8 cout << strlen(str5) << endl; // 21 (数值不确定) char str6[] = {'a', 'b', 'c', 'd', 'e', '0', 'f', 'g'}; cout << sizeof(str6) << endl; // 8 cout << strlen(str6) << endl; // 29 (数值不确定) char str7[] = {'a', 'b', 'c', 'd', 'e', '\0', 'f', 'g'}; cout << sizeof(str7) << endl; // 8 cout << strlen(str7) << endl; // 5 char str8[] = {'a', 'b', 'c', 'd', 'e', 0, 'f', 'g'}; cout << sizeof(str8) << endl; // 8 cout << strlen(str8) << endl; // 5 char str9[] = ""; cout << sizeof(str9) << endl; // 1 cout << strlen(str9) << endl; // 0 char a[10][9]; cout << sizeof(a) << endl; // 90 fun2(a); // 4 (fun2中的a为指针变量) cout << sizeof(A) << endl; // 1 (编译器实现) cout << sizeof(B) << endl; // 8 (内存对齐) cout << sizeof(C) << endl; // 8 (内存对齐) cout << sizeof(D) << endl; // 8 (内存对齐) cout << sizeof(E) << endl; // 8 (内存对齐) cout << sizeof(F) << endl; // 12 (内存对齐) cout << sizeof(G) << endl; // 8 (内存共用) cout << sizeof(H) << endl; // 1 (编译器实现) cout << sizeof(I) << endl; // 4 cout << sizeof(J) << endl; // 4 (虚指针) cout << sizeof(K) << endl; // 4 cout << sizeof(L) << endl; // 8 (虚指针) cout << sizeof(M) << endl; // 12 (虚指针) cout << sizeof(N) << endl; // 1 (静态成员变量不专属某一对象) cout << sizeof(O) << endl; // 4 (静态成员变量不专属某一对象) return 0;}

 

转载地址:http://jczti.baihongyu.com/

你可能感兴趣的文章
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>