Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++ 如何在C++;?_C++ - Fatal编程技术网

C++ 如何在C++;?

C++ 如何在C++;?,c++,C++,我正在写一个BF克隆,这是我到目前为止所拥有的,但它给我带来了一个错误。有人知道如何使用字符指针吗 #包括 int main(){ char*ptr1; ++ptr1; putchar(*ptr1); } > p>在C++中,你应该避免使用这种符号,毕竟是C++。 顺便说一句,您需要在此处阅读有关putchar()的内容: 问题 您正在尝试递增一个未定义的字符指针,在该指针的顶部,您正在使语法为的putchar()无效 int putchar(int字符) 应该是这样的 #include &l

我正在写一个BF克隆,这是我到目前为止所拥有的,但它给我带来了一个错误。有人知道如何使用字符指针吗

#包括
int main(){
char*ptr1;
++ptr1;
putchar(*ptr1);
}

> p>在C++中,你应该避免使用这种符号,毕竟是C++。 顺便说一句,您需要在此处阅读有关
putchar()
的内容:

问题

您正在尝试递增一个未定义的字符指针,在该指针的顶部,您正在使语法为的
putchar()
无效

int putchar(int字符)

应该是这样的

#include <stdio.h>

int main() {
    char ptr1= 'c';
    putchar(ptr1);
}
#包括
int main(){
char ptr1='c';
putchar(ptr1);
}

此代码具有未定义的行为

char*ptr1
声明指向
char
的未初始化指针。它不指向任何东西,并且具有不确定的值。阅读它是一种乐趣

++ptr1将指针的(垃圾)值增加1。这就是你点击UB的地方,即使它不是UB,你希望它能完成什么

putchar(*ptr1)
尝试打印由
ptr1
指向的
char
,但由于它不指向任何内容,因此也没有明确定义的行为


简而言之,这个程序就是无效的,编译器可以对它做任何事情。您不能对结果有任何期望。

什么错误对您的问题有帮助。但是,请回答我的一个问题:
ptr1
指向什么?作为这里的新用户,也请阅读。BF克隆是什么?两者都提到。-:)关键是
++ptr1
*ptr1
都已经有了未定义的行为。定义
*ptr1
就可以了。它与未定义的行为无关。当他做了
++ptr1
@unglished\u标记时,问题就出现了。我刚才说“定义
ptr1
很好。”。我没说取消引用是可以的。对不起,我看错了。我仍然认为谈论putchar在某种程度上超出了重点。