码迷,mamicode.com
首页 > 其他好文 > 详细

学习指针变量占用内存字节数相关心得

时间:2014-07-22 22:50:56      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   io   re   

在学习设置数据收发缓冲区时,做以下实验

void main ()
{    
    LPBYTE m_data=new BYTE[16];

    memcpy(m_data,"example",sizeof(m_data));
    string str="   ";
    str[0]=m_data[3];
    cout<<str<<endl;
}

函数memcpy(m_data,"example",sizeof(m_data));将“example”在内存中的二进制字节数据直接复制到m_data所指向的缓冲区中,复制的大小为第三个参数;

sizeof(数据类型)
此运算符功能:返回值就是该数据类型所占的字节数。

sizeof(变量名)
此运算符功能:返回值就是该变量所占的字节数。

不了解为什么m_data[k]当k>3时,输出总是?(m_data是一个指针变量)

可以直接用整数代替sizeof(m_data)得到理想结果。

经过实验

 1 # include <stdio.h>
 2 int main(void)
 3 {
 4 char ch = A;
 5 int i = 99;
 6 double x = 66.6;
 7 char * p = &ch;
 8 int * q = &i;
 9 double * r = &x;
10 printf("%d %d %d\n", sizeof(p), sizeof(q), sizeof(r)); //分别输出不同类型的指针变量名占多少字节。
11 return 0;
12 }

运行结果为 4 4 4

所以发现任何类型的指针变量都是占用4个字节。并且知道任何char(signed、unsigned或普通的)类型的sizeof都是1!不管char潜在的存储空间是否实际上是一个字节。

也就理解sizeof(指针变量)并不管指针所指向的区域大小,而是一个定值4,即sizeof(指针变量)占用内存大小为4,不关心指向的区域大小。

学习指针变量占用内存字节数相关心得,布布扣,bubuko.com

学习指针变量占用内存字节数相关心得

标签:style   blog   color   数据   io   re   

原文地址:http://www.cnblogs.com/jiangmingyuan/p/3855599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!