C++ 更改char变量值并使用指针打印
我想使用指针技术将C++ 更改char变量值并使用指针打印,c++,pointers,C++,Pointers,我想使用指针技术将char-fruit变量值从Apple更改为Orange请任何人帮助我解决问题。 这是密码 #include <iostream> using namespace std; int main() { char fruit='Apple'; char *ptr_fruit; ptr_fruit=&fruit; *ptr_fruit='Orange'; cout<< fruit; system("PAUSE");
char-fruit
变量值从Apple
更改为Orange
请任何人帮助我解决问题。
这是密码
#include <iostream>
using namespace std;
int main()
{
char fruit='Apple';
char *ptr_fruit;
ptr_fruit=&fruit;
*ptr_fruit='Orange';
cout<< fruit;
system("PAUSE");
}
#包括
使用名称空间std;
int main()
{
焦果和苹果;
果肉;
ptr_水果=&水果;
*ptr_水果‘橙色’;
不能这样改变吗
char*水果=“苹果”;
char*ptr_水果=水果
> P< >应执行 < P>。你应该复习C++的基础知识。对于St::String,放弃char *。无论如何,如果你真的想使用这种方法,有些技巧:
为您的水果声明足够大的缓冲区char-fruit[50]=“Apple”
使用strncpy进行复制和一些临时容器
1:您声明了这样一个数组
char Fruit[] = "Apple";
看到括号和双引号了吗
您要做的是声明一个char变量,因为当您将某个内容放入”
(双引号)时,它被视为字符串,当您将其放入”
(单引号)时,它被编译视为字符
2:当你说*ptr\u-fruit
时,编译器将其视为ptr\u-fruit[0]
。所以你也会在那一行中得到错误。这是你想要的吗
#include <iostream>
int main()
{
char const *fruit="Apple";
char const **ptr_fruit;
ptr_fruit = &fruit;
*ptr_fruit = "Orange";
std::cout << fruit;
}
#包括
int main()
{
char const*fruit=“苹果”;
炭常数**ptr_水果;
ptr_水果=&水果;
*ptr_fruit=“橙色”;
std::coutconst char*fruit=“Apple”;
const char*ptr_果=果;
std::cout您可能需要:
const char* fruit = "Apple";
const char** ptr_fruit = &fruit;
*ptr_fruit = "Orange"; // now fruit is "Orange"
但是我认为通过引入typedef
可以更容易理解下面的内容,从而避免了**
可能会令人困惑的问题
using c_string = const char*; // or `typedef const char* c_string;`
c_string fruit = "Apple";
c_string* ptr_fruit = &fruit;
*ptr_fruit = "Orange"; // now fruit is "Orange"
这两个代码段是等效的。simple char变量存储一个字符。在这种情况下,您需要指针、字符数组或字符串。如果此答案对您有帮助,请记住将其标记为答案快乐编码:)是的,我会的,但这里需要更多说明“”之间的区别是什么“”当我们处理char数据类型时,还有为什么我需要用array实现,而我用int
datatype做同样的事情相同的代码给我正确的结果。至少在你的帖子中放一些基本的格式。来吧。为什么我们需要strncpy
这个变量,指针也是一个保持器,请指导我。不,指针是not holders.Char*指向字符串的第一个字符。至于strncpy,请参阅联机文档。它基本上复制了Char数组的内容(始终使用strncpy,而不是strcpy,否则可能会出现意外溢出)。从string
常量到char*
的转换已被弃用。@rakeb.void:不,这是非法的。您的类型错误:“
是用于(单个)char
,您的意思可能是常量char*fruit=“Apple”
。远离系统(“暂停”)之类的黑客
@Jarod42不,我没有输入错误请告诉我const
背后的逻辑,以及为什么要将fruit
变量作为指针。@CoffeeandCode这有什么不好的吗?你建议使用什么。@MuhammadSohail某种不依赖于平台且不安全的东西。比如std::cin.get()
@LightnessRacesinOrbit我编译了它,运行了它,没有被罚款。请证明你的评论是正确的。那么你一定是在运行过时的编译器,或者是在非标准模式下运行。它自2011年以来是非法的,自1998年以来就被弃用了。至少打开你的编译警告。
using c_string = const char*; // or `typedef const char* c_string;`
c_string fruit = "Apple";
c_string* ptr_fruit = &fruit;
*ptr_fruit = "Orange"; // now fruit is "Orange"