C 如何访问存储在字符数组中的整数?

C 如何访问存储在字符数组中的整数?,c,memory,C,Memory,因此,我已经找到了如何将一个整数存储在我声明为(char arr[4096]={'\0'};)的char数组中,方法是将其中一个索引强制转换为整数指针,但是接下来如何访问存储在char数组中的这个整数呢 我曾尝试将值打印为int,但它不起作用。下面我将显示初始声明,后面是尝试打印语句 int *metaptr = (int*)(&arr[2]); *metaptr = numb; printf("%d\n",&arr[2]); 基本上,我希望numb的值被打印出来,但是相反,一

因此,我已经找到了如何将一个整数存储在我声明为(char arr[4096]={'\0'};)的char数组中,方法是将其中一个索引强制转换为整数指针,但是接下来如何访问存储在char数组中的这个整数呢

我曾尝试将值打印为int,但它不起作用。下面我将显示初始声明,后面是尝试打印语句

int *metaptr = (int*)(&arr[2]);
*metaptr = numb;
printf("%d\n",&arr[2]);
基本上,我希望numb的值被打印出来,但是相反,一个地址(大概)被打印出来了。如何访问存储在此字符数组中的整数值?

如下所示:

printf("%d\n", *metaptr);
或者这个:

printf("%d\n", *((int*)(&arr[2])));

使用调试器检查您正在操作的内存,以查看它是否按照您认为的方式工作。插入Int“有效”,但不适合字符内存空间。当你把它拉出来打印时,你只是把你放进去的东西的一部分拉出来。所以我已经知道了如何在一个字符数组中存储一个整数,我声明为(char-arr[4096]={'\0'};),方法是将一个索引转换为一个整数指针-这是未定义的行为,违反了严格的别名。此外,
&arr[2]
不是
int
,而是指向
char
(假设
arr[]
char
数组)的指针,因此,即使别名冲突不是未定义的行为,您也打印了错误的内容。是的,那么我如何提取整个int而不是一个字节呢@约翰·埃莱曼斯遵循相反的程序。