C++ 如何初始化字符**?
以下是我的代码:C++ 如何初始化字符**?,c++,visual-studio-2008,char,C++,Visual Studio 2008,Char,以下是我的代码: char** filename; *(filename) = "initialize"; printf("filename = %s",*(filename)); 我在尝试运行它时遇到此错误: Run-Time Check Failure #3 - The variable 'filename' is being used without being initialized. 有没有办法解决这个问题?您需要使用new或malloc为filename分配空间。事实上,文件名只
char** filename;
*(filename) = "initialize";
printf("filename = %s",*(filename));
我在尝试运行它时遇到此错误:
Run-Time Check Failure #3 - The variable 'filename' is being used without being initialized.
有没有办法解决这个问题?您需要使用new或malloc为filename分配空间。事实上,文件名只是指向未请求的随机内存区域的指针
filename = new char*;
您尚未分配要分配给的字符*:
char** filename = new char*;
*filename = "initialize";
但是你为什么需要这些东西呢?C方法:
char *a = "abcdefg";
char **fileName = &a;
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char * filename = (char*) malloc( 100 ); // reserve 100 bytes in memory
strcpy(filename,"initialize"); // copy "initialize" into the memory
printf("filename = %s",filename); // print out
free(filename); // free memory
filename = 0; // invalid pointers value is NULL
#包括
#包括
#包括
char*filename=(char*)malloc(100);//在内存中保留100字节
strcpy(文件名,“初始化”);//将“初始化”复制到内存中
printf(“文件名=%s”,文件名);//打印出来
免费(文件名);//空闲内存
文件名=0;//无效指针值为空
C++方式:
#include <string>
#include <iostream>
string filename("initialize"); // create string object
cout << "filename = " << filename; // write out to stanard out
#包括
#包括
字符串文件名(“初始化”);//创建字符串对象
你应该听听纳斯塔的答案。但要更正new
上的所有其他错误答案,请执行以下操作:
当然,真正的C++方式当然更好。
string filename = "initialize";
cout << "filename = " << filename;
stringfilename=“初始化”;
cout@muntoo:不,不是。问题中的诊断消息表示文件名是未初始化的指针。它是指向char*的指针,因此filename=new char*将filename设置为指向char*的未初始化指针是正确的。现在,是否真的需要一个双指针是一个单独的话题。是的,我相信记录会表明muntoo在这个问题上是不正确的。没关系,我们有时都会有点过分热情。要不要解释一下,@Muntoo?只要filename
需要一个非空值来保存char*
的地址,这是正确的。这只是因为“initialize”
是一个衰变为字符常量*
的数组,而不是字符*
,所以文件名
的类型从一开始就是错误的。这不能怪Ajay(或Thomas,或Joel)。再说一次,不是,除非你想挑出*filename不是指向const的指针这一事实,在这种情况下,我同意你的看法。
size_t len = strlen("initialize") + 1;
char* sz = new char [len];
strncpy(sz, "initialize", strlen("initialize"));
string filename = "initialize";
cout << "filename = " << filename;