想最终内容是以 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
如何存放连续的char*内存地址?
答案:2 悬赏:0 手机版
解决时间 2021-02-18 15:17
- 提问者网友:王者佥
- 2021-02-17 16:31
最佳答案
- 五星知识达人网友:野慌
- 2021-02-17 18:04
申请一个动态内存临时存储参数列
//count为str的元素个数
para=new char*[count];
for(int i=0;i
fun(para);
delete[] para;
//count为str的元素个数
para=new char*[count];
for(int i=0;i
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 =
;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯