C – 通过引用传递已知大小的多维数组,如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计259个文字,预计阅读时间需要2分钟。
主要:定义 char myData[500][9]; // 动态行?char *tableData[500]={NULL}; // 动态行?int r; newCallBack(db, myData, tableData, &r); 通过以下方式递归传递给函数:void newCallBack(sqlite3 *db, char mdat, char *tdat, int *r)
主要:char *myData[500][9]; //dynamic rows?? char **tableData[500]={NULL}; //dynamic rows?? int r; newCallBack(db, &myData, &tableData, &r);
通过以下方式传递给函数:
void newCallBack(sqlite3 *db, char** mdat, char*** tdat, int* r ) {
好像不喜欢这个?有什么建议?当你不知道尺寸时在网上有很多例子,现在就试试看….
谢谢.
首先,myData的问题在于它是错误的类型. char * [] []需要你正在调用的函数中的原型char ***(一个二维字符串数组).如果您不介意限制字符串的大小,该函数需要一个字符串列表,即char * []或char [] [].要获得完全动态的数组大小,您必须使用malloc()和free()手动分配(并释放!)内存,并将变量类型更改为char ** myData和char *** tableData.
本文共计259个文字,预计阅读时间需要2分钟。
主要:定义 char myData[500][9]; // 动态行?char *tableData[500]={NULL}; // 动态行?int r; newCallBack(db, myData, tableData, &r); 通过以下方式递归传递给函数:void newCallBack(sqlite3 *db, char mdat, char *tdat, int *r)
主要:char *myData[500][9]; //dynamic rows?? char **tableData[500]={NULL}; //dynamic rows?? int r; newCallBack(db, &myData, &tableData, &r);
通过以下方式传递给函数:
void newCallBack(sqlite3 *db, char** mdat, char*** tdat, int* r ) {
好像不喜欢这个?有什么建议?当你不知道尺寸时在网上有很多例子,现在就试试看….
谢谢.
首先,myData的问题在于它是错误的类型. char * [] []需要你正在调用的函数中的原型char ***(一个二维字符串数组).如果您不介意限制字符串的大小,该函数需要一个字符串列表,即char * []或char [] [].要获得完全动态的数组大小,您必须使用malloc()和free()手动分配(并释放!)内存,并将变量类型更改为char ** myData和char *** tableData.

