C++ 为什么在尝试访问字符串中的字符时会出现seg错误
我试图将命令存储在队列中,稍后从队列中读取它们。我之所以使用,是因为代码需要在Arduino上运行。当访问第一个(或任何)字符时,我遇到了一个分段错误。我做错了什么C++ 为什么在尝试访问字符串中的字符时会出现seg错误,c++,arrays,pointers,queue,C++,Arrays,Pointers,Queue,我试图将命令存储在队列中,稍后从队列中读取它们。我之所以使用,是因为代码需要在Arduino上运行。当访问第一个(或任何)字符时,我遇到了一个分段错误。我做错了什么 int main() { cppQueue q(sizeof(char*), 10); char c1[] = {'a', 'b', 'c'}; q.push(&c1); char *command; q.pop(&command); char first = co
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;
};
intmain(){
cppq(sizeof(char*)),10;
字符c1[]={'a','b','c'};
q、 推送(&c1);
char*命令;
q、 pop(命令和命令);
char first=command[0];数组不是指针。在大多数表达式中,数组可以自动转换为指针,但一元&
运算符使用了一个例外
使用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;
}
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;
}