Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用字符指针存储整数_C++_C - Fatal编程技术网

C++ 使用字符指针存储整数

C++ 使用字符指针存储整数,c++,c,C++,C,我有一个字符指针,需要使用这个指针在内存中存储2字节的值。 试过这个 *dataConfigured = configuredParameterCount; *++dataConfigured = configuredParameterCount << 8; *dataConfigured=configuredParameterCount; *++dataConfigured=configuredParameterCount假设: char dataConfigured

我有一个字符指针,需要使用这个指针在内存中存储2字节的值。 试过这个

*dataConfigured =  configuredParameterCount;   
*++dataConfigured =  configuredParameterCount << 8; 
*dataConfigured=configuredParameterCount;
*++dataConfigured=configuredParameterCount假设:

char dataConfigured[2];
uint16_t configuredParameterCount = 4711;
你可以做:

memcpy(dataConfigured, &configuredParameterCount, sizeof(dataConfigured));
假设:

char dataConfigured[2];
uint16_t configuredParameterCount = 4711;
你可以做:

memcpy(dataConfigured, &configuredParameterCount, sizeof(dataConfigured));
如果你有

char* dataConfigured = ..;
short data = 123;
你能行

*((short*)dataConfigured) = data;
小心-您需要确保保留了足够的内存。

如果您有

char* dataConfigured = ..;
short data = 123;
你能行

*((short*)dataConfigured) = data;

小心-您需要确保保留足够的内存。

假设
configuredParameterCount
的类型为
short
(2字节),您只需执行此操作即可

*((short*)dataConfigured) = configuredParameter;
但一定要确保
dataConfigured
指向的缓冲区有足够的空间


正如@Calvin所指出的,这可能会在某些计算机体系结构上造成问题(尽管它可以在最常见的体系结构上工作,如x86和x64)。但是,如果您想在所有体系结构上使用
memcpy
则更安全(速度较慢但更安全)

假设
configuredParameterCount
的类型是
short
(2字节),您可以简单地执行此操作

*((short*)dataConfigured) = configuredParameter;
但一定要确保
dataConfigured
指向的缓冲区有足够的空间


正如@Calvin所指出的,这可能会在某些计算机体系结构上造成问题(尽管它可以在最常见的体系结构上工作,如x86和x64)。但是,如果您想在所有体系结构上使用
memcpy
则更安全(速度较慢但更安全)

什么类型的
dataConfigured
configuredParameterCount
“更好的代码”可能意味着更快、消耗更少的RAM内存、消耗更少的程序内存、更安全、更可读、更可维护。。。此外,我们不知道这些变量是什么类型的。你的问题需要澄清,或者没有人能回答(他们会继续尝试,尽管他们当然不能…。
dataConfigured
configuredParameterCount
“更好的代码”可能意味着更快、消耗更少的RAM内存、消耗更少的程序内存、更安全、更可读、更可维护。。。此外,我们不知道这些变量是什么类型的。你的问题需要澄清,否则没有人能回答(他们会继续尝试,当然,即使他们不能回答…),但这并不一定更快。如果OP使用的是8位CPU怎么办?如果没有一个特定的系统,你就无法真正优化代码。@Lundin:正如你在对问题的评论中所说的,不清楚更好的含义是什么。由于过早优化不好,我不会假设“更好”意味着“更快”。首先,如果代码不违反其他约束(如性能),那么正确且可读的代码通常是“最佳”的。从这个意义上说,我相信这个答案是“更好”。不过,这并不一定更快。如果OP使用的是8位CPU怎么办?如果没有一个特定的系统,你就无法真正优化代码。@Lundin:正如你在对问题的评论中所说的,不清楚更好的含义是什么。由于过早优化不好,我不会假设“更好”意味着“更快”。首先,如果代码不违反其他约束(如性能),那么正确且可读的代码通常是“最佳”的。从这个意义上说,我相信这个答案是“更好”。不过,这并不一定更快。如果OP使用的是8位CPU怎么办?如果没有一个特定的系统,你就无法真正优化代码。这有可能打破一致性至关重要的体系结构(例如SPARC或定制MCU/SoC)。确实gcc有这样的警告。@Calvin我同意,现在我越想它,操作代码似乎是更好的选择。不过,这并不一定更快。如果OP使用的是8位CPU怎么办?如果没有一个特定的系统,你就无法真正优化代码。这有可能打破一致性至关重要的体系结构(例如SPARC或定制MCU/SoC)。确实gcc有这样的警告。@Calvin我同意,现在我越想它,操作代码似乎是更好的选择。