我正在编写一个可以修改函数函数的行和列的程序。我不明白如何做指针的指针。
void changeNum(int*setRows, int *setCol)
{
changeNum2(*setRows,*setCol);
}
void changeNum2(int*setRows, int *setCol)
{
*setRows=5;
*setCol=5;
}
int main() {
int*row=10;
int* col=10;
changeNum(&row,&col);
printf("%d %d",row,col);
return 0;
}
答案 0 :(得分:1)
首先
int*row=10;
int* col=10;
这是错误的。分配硬编码地址。你不想要这个
int row=10;
int col=10;
如何获取行和col的地址?
&row
和&col
。
如何将其传递给函数?
将其称为changeNum(&row,&col);
void changeNum(int*setRows, int *setCol)
{
...
}
如何将指针传递给指针?
void changeNum(int*setRows, int *setCol)
{
chnageNum2(&setRows, &setCol);
}
ChangeNum2
它会如何改变价值?
void chnageNum2(int **setRows, int **setCol){
**setRows = 110;
**setCol = 110;
}
我们可以仅使用changeNum()
进行相同的更改吗?
是的,我们可以做到。
void changeNum(int*setRows, int *setCol)
{
*setRows = 110;
*setCol = 110;
}
绝对检查this。拿一本书。它会有很大的帮助。
完整的代码将是
void changeNum(int*setRows, int *setCol)
{
changeNum2(&setRows,&setCol);
}
void changeNum2(int**setRows, int **setCol)
{
**setRows=5;
**setCol=5;
}
int main(void) {
int row=10;
int col=10;
changeNum(&row,&col);
printf("%d %d",row,col);
return 0;
}
答案 1 :(得分:0)
#include <stdio.h>
void changeNum(int*, int*);
void changeNum2(int*, int*);
void changeNum(int* setRows, int *setCol) {
changeNum2(setRows,setCol);
}
void changeNum2(int* setRows, int *setCol) {
*setRows=5;
*setCol=5;
}
int main() {
int row=10;
int col=10;
changeNum(&row, &col);
printf("%d %d\n", row, col);
return 0;
}
需要一些时间才能掌握每个C函数参数都是按值传递的。因此,您可以通过其值将setRows
指针安全地传递给第二个函数。
此外,有必要先声明函数changeNum2
,我已经包含了没有参数名称的声明,以澄清它的可能性。
我强烈建议您阅读本书:https://en.wikipedia.org/wiki/The_C_Programming_Language,特别是第5章(指针和数组)。
您可以轻松找到PDF副本。我终于学到了这个概念。