美文网首页
C/C++ 数据长度

C/C++ 数据长度

作者: hey白启明 | 来源:发表于2019-03-04 19:56 被阅读0次

知识点

  • C/C++基本数据类型在各平台下的长度(所占字节)
  • 类所占字节(例题5)

基本数据类型

type 32位 64位
char 1 1
short 2 2
int 4 4
long 4 4
long int 4 4
long long 8 8
float 4 4
double 8 8
long double 8 8
bool 1 1
wchar_t 2 2
point 4 8
  • 通过指针大小,可以判定机器字长

  • 在类中,如果什么都没有,则类占用1个字节,一旦类中有其他的占用空间成员,则这1个字节就不在计算之内。
  • 成员函数不占内存
  • 虚函数表占4个字节
  • static类成员不算做对象内

相关函数

  • sizeof() 占用字节数
  • strlen() 字符串长度 不计算\0

例题1

unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
  • 请问p1+5= 什么?p2+5= 什么?
  • 答案 801005 810014
  • 注意换成16进制

例题2

  • 在32位机器中,如下代码的输出?
void example(char acWelcome[]){
    printf("%d",sizeof(acWelcome));
    return;
}
void main(){
    char acWelcome[]="Welcome to Huawei Test";
    example(acWelcome);
    return;
}
  • 答案 4
  • 此时acWelcome只是一个指针

例题3

void Func(char str_arg[100])
{
       printf("%d\n",sizeof(str_arg));
}
int main(void)
{
     char str[]="Hello";
     printf("%d\n",sizeof(str));
    printf("%d\n",strlen(str));
    char*p=str;
    printf("%d\n",sizeof(p));
    Func(str);
}
  • 输出结果是?
  • 答案:6 5 4 4
  • 字符数组储存长度 字符的长度 指针 指针

例题4

  • 下面程序运行后的结果为:
char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = reinterpret_cast<int *>(p);
p1++;
p = reinterpret_cast<char *>(p1); 
printf("result is %s\n", p);
  • 答案:result is to test something
  • reinterpret_cast函数用于重新设置指针类型,++运算自增原指针类型长度的距离

例题5

  • 若char是一字节,int是4字节,指针类型是4字节,代码如下:
class CTest
{
    public:
        CTest():m_chData(‘\0’),m_nData(0)
        {
        }
        virtual void mem_fun(){}
    private:
        char m_chData;
        int m_nData;
        static char s_chData;
};
char CTest::s_chData=’\0’;
  • (1)若按4字节对齐sizeof(CTest)的值是多少?(2)若按1字节对齐sizeof(CTest)的值是多少?
  • 答案:12 9
  • 注意对齐方法

参考

闲聊c/c++: 各平台下基本数据类型的字节长度

相关文章

  • C++学习笔记目录

    C++初步 C++数据长度 C/C++ 堆 栈 静态 常量 代码 区 static关键字 C++类和对象 C++引...

  • C/C++ 数据长度

    知识点 C/C++基本数据类型在各平台下的长度(所占字节) 类所占字节(例题5) 基本数据类型 通过指针大小,可以...

  • c++笔记1

    1.数据类型 黑色的是c和c++共有的数据类型,红色的是c++独有的数据类型。 2.基本类型数据的内存长度和数值范...

  • python3 c++ 和 java

    基本语法 长度 python c++ java 标准化输入&输出 python c++在C++中,标准的输入输出是...

  • 串匹配之蛮力算法

    基于邓俊辉老师的c++数据结构 问题描述:给定文本串T,长度n 如:1001101101模式串P,长度m,如: ...

  • C++ 数据结构与算法

    C++ 容器与算法 vector 容器: 动态数组,可动态扩容,扩容时重新开辟原有长度2倍的长度,然后将原有的数据...

  • 随机数产生

    用C++实现,产生100以内得随机数 函数实现: 实验结果: 设定产生得数据长度为10。

  • Go语言slice和数组的区别

    Go语言中数组是具有固定长度的相同数据类型元素的序列。而slice的长度可变。个人理解,类似C++中数组和vect...

  • 多年程序员推荐:学习C语言的书籍有哪些?

    c++程序设计教程 c++编程思想 c++大学教程 c++程序设计语言 数据结构算法与应用c++语言描述 c++标...

  • C++和Python的混合编程-C++数据类型的导出和调用

    视频教程:C++数据类型的导出和调用(上)C++数据类型的导出和调用(下)C++数据类型的导出的补充 boost:...

网友评论

      本文标题:C/C++ 数据长度

      本文链接:https://www.haomeiwen.com/subject/umcyuqtx.html