为什么在尝试访问字符串中的字符时出现段错误
Why do I get a seg fault when trying to access a character in a string
我正在尝试将命令存储在队列中,稍后再从队列中读取它们。我正在使用 this queue 因为代码需要在 Arduino 上 运行。访问第一个(或任何)字符时,出现分段错误。我在这里做错了什么?
int main() {
cppQueue q(sizeof(char*), 10);
char c1[] = {'a', 'b', 'c'};
q.push(&c1);
char *command;
q.pop(&command);
char first = command[0]; <-- error
// do stuff with first
return 0;
};
感谢您的帮助!
PS:有效:
cppQueue q(sizeof(int), 10);
int x = 1;
q.push(&x);
int numba;
q.pop(&numba);
std::cout << numba << "\n"
数组不是指针。在大多数表达式情况下,数组可以自动转换为指针,但其中一个例外是与一元 &
运算符一起使用。
使用 q.push(&c1);
,队列将读取数组的内容(加上一些超出范围区域的垃圾)代替有效的指针值。
使用指针变量为队列提供指针。
int main() {
cppQueue q(sizeof(char*), 10);
char c1[] = {'a', 'b', 'c'};
char* p = c1;
q.push(&p);
char *command;
q.pop(&command);
char first = command[0];
// do stuff with first
return 0;
}
我正在尝试将命令存储在队列中,稍后再从队列中读取它们。我正在使用 this queue 因为代码需要在 Arduino 上 运行。访问第一个(或任何)字符时,出现分段错误。我在这里做错了什么?
int main() {
cppQueue q(sizeof(char*), 10);
char c1[] = {'a', 'b', 'c'};
q.push(&c1);
char *command;
q.pop(&command);
char first = command[0]; <-- error
// do stuff with first
return 0;
};
感谢您的帮助!
PS:有效:
cppQueue q(sizeof(int), 10);
int x = 1;
q.push(&x);
int numba;
q.pop(&numba);
std::cout << numba << "\n"
数组不是指针。在大多数表达式情况下,数组可以自动转换为指针,但其中一个例外是与一元 &
运算符一起使用。
使用 q.push(&c1);
,队列将读取数组的内容(加上一些超出范围区域的垃圾)代替有效的指针值。
使用指针变量为队列提供指针。
int main() {
cppQueue q(sizeof(char*), 10);
char c1[] = {'a', 'b', 'c'};
char* p = c1;
q.push(&p);
char *command;
q.pop(&command);
char first = command[0];
// do stuff with first
return 0;
}