提问者:小点点

c(arduino)返回字符指针的杂项函数


我在一些代码中找到了函数。 看起来这个函数生成一个长度可变的随机数并返回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*(我没有代码链接)


共1个答案

匿名用户

首先,您的代码不工作。 在这一行中写入数组的外部

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是指向常量字符的常量指针

相关问题