Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在尝试访问字符串中的字符时会出现seg错误_C++_Arrays_Pointers_Queue - Fatal编程技术网

C++ 为什么在尝试访问字符串中的字符时会出现seg错误

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

我试图将命令存储在队列中,稍后从队列中读取它们。我之所以使用,是因为代码需要在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;
};
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;
}