//v is a random number 0 or 1
const char *str;
//str = 48 + v; //how to set??
我尝试memcpy
并sprintf
遇到了“const char *”的问题
我想将“str”设置为“v”定义的 0 或 1。但它必须是“ const char* ”类型
我的猜测是您想在第一次声明 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
这也适用于您尝试做的字符。
这是处理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.