C初学者题: Pointer to a pointer/Can't access values from outside a function

标签 c function pointers

我将一个指向指针 (**resultSet) 的指针传递给我的 MySQL 函数。

以下是我如何从函数中复制 MySQL 数据的摘录:

int
getItems(char * cmd, char **resultSet)
{

...
MYSQL initialisations and set-up
...



    resultSet = malloc(sizeof(char)*(int)mysql_num_rows);

    while((row = mysql_fetch_row(result))) 
    {

            for (i=0 ; i < mysql_num_fields(result); i++)               
            {   
            printf("%i: \t", i);        
            resultSet[counter] = malloc(sizeof(char)*strlen(row[i])+1);
            strcpy(resultSet[counter], row[i]);
            printf("%s\n", resultSet[counter]);
            }
            printf("---------------------\n");
            counter++;      
    }
...
MYSQL cleaning up
...
return 0;
}

在 main 中调用它

getItems(cmd, resultSet);

在我的 getItems 函数中这个

printf("%s\n", resultSet[0]);

似乎有效。

但是,如果我尝试从我的函数外部访问它,我会遇到段错误。这是为什么?

最佳答案

你可能想要:

resultSet = malloc(sizeof(void *)*(int)mysql_num_rows);

代替:

resultSet = malloc(sizeof(void)*(int)mysql_num_rows);

因为你需要指针而不是字节。

关于C初学者题: Pointer to a pointer/Can't access values from outside a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001553/

相关文章:

c++ - 指针引用可能检测到内存泄漏?

c++ - 再谈在智能指针上不进行隐式转换的原因

c - 如何将c中的整个文件读入数字数组

c - Linux 上 C 中带有通配符条目的文件名

c++ - 如何告诉 C++ 根据索引指示符放弃 vector 中的某些元素

c - 有没有一种方法可以将结构索引为 Glib 哈希表中的值?

python - 为什么对全局变量的错误分配会提早引发异常?

php - Ckeditor/PHP 中的 WordPress 风格简码

php glob 与 scandir

c++ - 为什么变量指针包含相同数据类型的地址?