如何初始化char**

How to initialize char**?

本文关键字:char 初始化      更新时间:2023-10-16

这是我的一段代码:

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";