初始化字符*
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
【讨论】:
另见strcat
和strcpy
。以上是关于初始化字符*的主要内容,如果未能解决你的问题,请参考以下文章