欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Thinking in C] 内存截断

程序员文章站 2024-02-29 18:05:52
...

测试代码如下:

#include <stdio.h>
#include <stdbool.h>

typedef unsigned char byte;

int main( )
{

	int DataSize[1];
	DataSize[0]=256;
	
	byte Compare[1];
	Compare[0]=256;
	
	int change[1];
	
	byte *p= NULL;
	p=(byte *) DataSize;
//特别注意此处是内存截断,可以往小了截,不能往大了截

	printf("Compare[0]=%d\n",Compare[0]);
	printf("DataSize[0]=%d\n",DataSize[0]);
	
	
	printf("*p[0]=%d\n",*p);

}

console结果如下:
[Thinking in C] 内存截断

补充:

但是注意要是写下面这种对 指针 p前后矛盾的代码,是无法截断数据的。

#include <stdio.h>
#include <stdbool.h>

typedef unsigned char byte;

int main( )
{

	int DataSize[1];
	DataSize[0]=256;
	
	byte Compare[1];
	Compare[0]=256;
	
	int change[1];
	
	int *p= NULL;
	p=(byte *) DataSize;
//特别注意此处是内存截断,可以往小了截,不能往大了截

	printf("Compare[0]=%d\n",Compare[0]);
	printf("DataSize[0]=%d\n",DataSize[0]);
	
	
	printf("*p[0]=%d\n",*p);

}

[Thinking in C] 内存截断

相关标签: 计算机基础