永发信息网

如何存放连续的char*内存地址?

答案:2  悬赏:0  手机版
解决时间 2021-02-18 15:17
  • 提问者网友:王者佥
  • 2021-02-17 16:31
想最终内容是以 const char * const * para 的参数形式传入函数内。

但是,现在是想动态改变这个参数的内容再传入。
如:现在函数:void fun(const char * const * para);
我有变量:std::string str[4]; char ** para;
我想要的存储形式是
str[0]的地址str[0].c_str()、str[1]的地址str[1].c_str()....
连续存放入para。
para和str都是大小动态变化,程序该如何写呢?
C/C++/Qt
最佳答案
  • 五星知识达人网友:野慌
  • 2021-02-17 18:04
申请一个动态内存临时存储参数列
//count为str的元素个数
para=new char*[count];
for(int i=0;i fun(para);
delete[] para;
全部回答
  • 1楼网友:青尢
  • 2021-02-17 19:27
对于int型数组,java调用的是下面的方法: public println( x) { s = .valueof(x); synchronized ( ) { (s); newline(); } } 此处数组被认为是object类型,调用的是 valueof( obj) { (obj == ) ? : obj.tostring(); } 此处的三目表达式用来判空,然后看一下obj.tostring()方法: string tostring() { getclass().getname() + + integer.tohexstring(hashcode()); } 相信看到此处应该可以看出来为什么输出会是[i@1b6d3586了,i代表的类的名称。 那么对于char数组类型的调用呢 : ( x[]) { ( ) { (x); newline(); } } 此处调用的是println(char x[])这个函数,那么这个char x[]是个什么鬼呢? 其实就是java中的数组初始化,相当于char[] x。 然后看看print(x)函数: ( s[]) { (s); } 最后是write()函数: ( buf[]) { { ( ) { ensureopen(); textout. (buf); textout.flushbuffer(); charout.flushbuffer(); (autoflush) { ( i = ; i < buf.length; i++) (buf[i] == ) out.flush(); } } } (interruptedioexception x) { thread.currentthread().interrupt(); } (ioexception x) { trouble = ; } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯