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