1
//v is a random number 0 or 1
const char *str;
//str = 48 + v; //how to set??  

我尝试memcpysprintf遇到了“const char *”的问题

我想将“str”设置为“v”定义的 0 或 1。但它必须是“ const char* ”类型

4

2 回答 2

4

我的猜测是您想在第一次声明 const char 后更改它的值,对吗?虽然您不能直接更改 const char* 的值,但您可以将指针值更改为普通变量。例如在此处查看此页面:C 和 C++ 中的常量

这是使用指针更改 const 值可以做和不能做的事情:(从上面的链接中采用):

const int x;      // constant int
x = 2;            // illegal - can't modify x

const int* pX;    // changeable pointer to constant int
*pX = 3;          // illegal -  can't use pX to modify an int
pX = &someOtherIntVar;      // legal - pX can point somewhere else

int* const pY;              // constant pointer to changeable int
*pY = 4;                    // legal - can use pY to modify an int
pY = &someOtherIntVar;      // illegal - can't make pY point anywhere else

const int* const pZ;        // const pointer to const int
*pZ = 5;                    // illegal - can't use pZ to modify an int
pZ = &someOtherIntVar;      // illegal - can't make pZ point anywhere else

这也适用于您尝试做的字符。

于 2012-06-02T19:14:46.863 回答
1

这是处理const char *。它是一个指向const char. const char表示字符不能改变。指针不是常量,所以它可以改变。

当你这样做时:

str = 48 + v;

您正在尝试将指针更改为 48 或 49,具体取决于是什么v。这是荒谬的。如果它编译,它将指向随机内存。您想要的是将“str”指向的内容更改为 0 或 1。

由于它只能指向常量字符,它只能指向定义为值的东西,用引号引起来。因此,例如,可以将其设置为指向“0”,即常数字符或“1”,即常数字符。所以你可以做这样的事情:

str = "0"; // point to a constant character string "0"
if( v )
    str = "1"; // point to a constant character string "1"

请注意,由于str指向常量字符,您不能修改它指向的内容:

*str = '1'; // Won't work because you are trying to modify "0" directly.  
于 2012-06-02T19:23:04.020 回答