Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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++ 更改char变量值并使用指针打印_C++_Pointers - Fatal编程技术网

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::cout
    const 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"