我在一些代码中找到了函数。 看起来这个函数生成一个长度可变的随机数并返回char*
char* result = (char*)malloc(sizeof(char)*length);
randomSeed(analogRead(A0));
for (int i = 0; i < length; ++i)
{
result[i] = 48 + random(9);
}
result[length] = '\0';
当我测试它时,我很惊讶这段代码可以工作,但是理论上char*是只读数据,因此对元素的这种访问应该是不正确的。 有人能给我解释一下吗?
我认为创建者最好使用char数组,然后将内存复制到char*(我没有代码链接)
首先,您的代码不工作。 在这一行中写入数组的外部
result[length] = '\0';
代码应该如下所示:
for (int i = 0; i < length - 1; ++i)
{
result[i] = 48 + random(9);
}
result[length - 1] = '\0';
char只是一个整数类型,它可以读或写。
如果您想使它不可写(至少从C++的角度来看),您需要将它声明为const
。
const char a;
const char *ptr1;
char * const ptr2;
const char * const ptr3;
其中:
PTR1
是指向常量字符的指针
ptr2
是指向char的常量指针
ptr2
是指向常量字符的常量指针