初始化字符*

Posted

技术标签:

【中文标题】初始化字符*【英文标题】:Initialize Char* 【发布时间】:2018-06-11 12:05:26 【问题描述】:

我正在尝试使用动态内存分配声明一个 char*,然后用一串字符对其进行初始化,但我不断收到此错误...

错误信息:

“const char *”类型的值不能用于初始化“int *”类型的实体

代码:

void main() 
    char *alphabet = new char();
    alphabet = "abcdefghijklmnopqrstuvwxyz";
    cout << alphabet;

    system("pause");

我明白这个

void main() 
    char *alphabet = new char();
    cin.getline(alphabet, 255);
    cout << alphabet;

    system("pause");    

会起作用,但我不明白为什么没有用户输入就无法初始化它;

【问题讨论】:

不,这也不起作用。您似乎对 C++ 有很多误解。你应该退后一步,从一本好书中系统地学习语言。 new char()一个单个字符分配空间并将其初始化为零。然后在第一个程序中,您重新分配alaphabet 以指向一个常量字符串文字(类型为const char *),这会使您丢失new 返回的原始指针。在这两个程序中都没有任何int *,这意味着您显示的错误不是来自您显示的任何程序。 这是哪个编译器? GCC 和 Clang 都将 void main 视为错误。 最后,如果你真的想学编程和C++,请get some good books to read。 参见上面链接的The Definitive C++ Book Guide and List。 【参考方案1】:

你的问题不好。但我还是给使用一个问题。你可以尝试如下:

#include<iostream>

using namespace std;
void showAlphabetArray(char*alp)

  for(int i=0;i<26;i++)
  
    cout<<alp[i];
  

int main() 
  //declare and init `char` array
  char *alphabet = new char[26];
  //init value
  for(int i=0;i<26;i++)
  
      alphabet[i] = i + 97;
  
  showAlphabetArray(alphabet);
  system("pause");    

您应该参考 ASCII https://en.wikipedia.org/wiki/ASCII

【讨论】:

另见strcatstrcpy

以上是关于初始化字符*的主要内容,如果未能解决你的问题,请参考以下文章

C语言字符数组如何初始化?

字符数组 & 字符串 的初始化方法

C++字符指针数组的初始化及赋值问题

c语言 如何将已赋值的字符串初始化为空?

003 初始化空间: 字符和字符串

字符数组的错误初始化字符串太长 [-fpermissive]