如何初始化char**
How to initialize char**?
这是我的一段代码:
char** filename;
*(filename) = "initialize";
printf("filename = %s",*(filename));
当我尝试运行它时,我遇到了这个错误:
Run-Time Check Failure #3 - The variable 'filename' is being used without being initialized.
有什么办法解决这个问题吗?
char *a = "abcdefg";
char **fileName = &a;
C方式:
#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
C++方式:
#include <string>
#include <iostream>
string filename("initialize"); // create string object
cout << "filename = " << filename; // write out to stanard out
您需要使用new或malloc为文件名分配空间。事实上,文件名只是一个指针,指向你没有请求的随机内存区域。。。
filename = new char*;
char** filename = new char*;
*(filename) = "initialize";
printf("filename = %s",*(filename));
但你为什么需要这些东西?
@Naszta的答案是你应该听的。但要纠正上的所有其他错误答案new
:
size_t len = strlen("initialize") + 1;
char* sz = new char [len];
strncpy(sz, "initialize", strlen("initialize"));
当然,真正的C++方法更好。
string filename = "initialize";
cout << "filename = " << filename;
对于初始化char **variable
,您也可以使用以下方式。
//define length
int length = 1;
std::string init_str = "your_string";
//inititlize char **var length
char **my_var = static_cast<char **>(calloc(length, sizeof(char *)));
my_var[0] = static_cast<char *>(calloc(init_str.size() + 1, sizeof(char)));
//copy string value in char **my_var
strcpy(argv[0], api_flag.c_str());
通过这种方式,您可以初始化多个值,并为长度(N(分配值
您尚未分配要分配的char*:
char** filename = new char*;
*filename = "initialize";
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 使用指针初始化 char 数组或字符串 C++
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 对象初始化后在C++中显示 char 数组时的异常行为
- c ++ 如何在构造函数中初始化 char
- 无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
- 以这种方式初始化的 char 数组是否会自动添加空终止符?
- 为什么 char 可以在 std::array 中初始化为 nullptr,而不是单独初始化?
- 使用 const char* 初始化 const ref 字符串成员时幕后会发生什么
- 如何使用 C++ 中的原语初始化类(如 std::字符串从 const char* 初始化)
- C++ 如何检查 char 变量是否未定义(未初始化)
- 在这种情况下,如何从类型 "const char*" 初始化字段?
- 为什么通过添加字符串文字和char初始化时,为什么不打印字符串
- 从二维数组中的char*初始化c++字符串时,读取大小为1的无效值
- 使用 char 初始化多维数组
- c++中的char初始化构造函数
- 如何从vector char初始化stringstream
- c++11-使用{}构造函数直接从char*初始化std::string
- 用const char初始化2D char数组元素
- 如何从const unsigned char*初始化std::istringstream,无需强制转换或复制