我正在尝试传递指针指针,以便在另一个函数中修改其内容.为了做到这一点,我已经读过我需要使用指针指针的指针,所以这里是我的"代码"到目前为止:
void modify(s8 ***strings){
// Modifies the strings
}
void main(){
s8 strings[9][95];
for(i = 0 ; i < 9 ; i++){
for(j = 0 ; i < 95 ; i++){
strings[i][j] = 0;
}
}
modify(&strings);
}
Run Code Online (Sandbox Code Playgroud)
s8是我正在使用的MicroBlaze使用的特殊类型,这是一个问题吗?我还读过我需要使用const,但我不明白在哪里以及为什么?
大小怎么样?我是否需要在内部使用malloc修改才能在内存中保留空间?或者可以将修改功能设置为:
void modify(s8 *strings[9][95])
Run Code Online (Sandbox Code Playgroud)
现在,我的问题如下:我在最后一行(修改(&strings))上收到有关错误指针类型的警告.
passing argument 1 of 'modify' from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答!
首先,数组数组与指针指针不同.
其次,如果您想要修改数组中的字符串,则不需要通过传递指针来模拟传递引用strings
.你需要的只是将它作为普通参数传递,当然适当地修改函数:
void modify(s8 strings[][95]){
...
}
int main(void){
s8 strings[9][95];
...
modify(strings);
...
}
Run Code Online (Sandbox Code Playgroud)
在modify
函数中,您声明strings
是一个指向95
字符数组的指针.然后当你strings
从main
函数传递它衰变到指向它的第一个元素的指针时,它恰好是指向一个95
字符数组的指针.
如果你想更明确地指出作为指针的strings
参数modify
,你可以做例如
void modify(s8 (*strings)[95]){
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
122 次 |
最近记录: |