- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
试图简化我的代码,我想我会很聪明,将一个函数中的所有变量分配到一个单独的函数中,以删除大代码块。然而,当我尝试 malloc 一些变量时,编译器返回:
warning: ‘roomString’ is used uninitialized in this function [-Wuninitialized]
这是缩短的代码:
int main(){
char ** roomString;
mallocBoard(roomString);
return 0;
}
void mallocBoard(char ** roomString)
{
roomString = malloc(sizeof(char *) *PARSEBUFF);
}
只是想知道为什么它会返回警告?有更好的方法吗?
最佳答案
这是因为 roomString
在 main()
中未初始化。
当您将 roomString
指针传递给 mallocBoard
函数时,它不会覆盖存储在指针中的地址,而是覆盖存储在传递给的本地指针中的地址mallocBoard()
那是因为在 c 中你总是按值传递变量。
我的意思是 mallocBoard()
中作为参数接收的 roomString
是原始指针的副本,它只是包含与 中原始指针相同的地址code>main()
也指向,但是它自己的地址不同,所以修改它的值不会修改 main()
中指针的值。
你有两个选择
像这样将指针的地址传递给mallocBoard()
void mallocBoard(char ***pointer, size_t size)
{
*pointer = malloc(sizeof(char *) * size);
}
然后从 main()
mallocBoard(&roomString, someSize);
这将修改原始指针的值。
像这样从 mallocBoard()
返回新的 malloc()
ed 指针
char **mallocBoard(size_t size)
{
return malloc(sizeof(char *) * size);
}
然后在 main()
roomString = mallocBoard(someSize);
关于c - 单独函数中的 Malloc 变量导致 "uninitialized in this function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845808/
我想问一个让我困惑的问题。我正在尝试扫描字符串并将其转换为实数。使用该数字来计算值(value)。这是我的代码: string input_file_name1 = "shen_test_38_30_
我正在为我的 C 类入门编写一个程序,当我尝试使用 gcc 进行编译时,我不断收到一些警告。 这是我的代码: char **outList; *outList = strdup(cloudDevice
我正在使用 Chromium 嵌入式框架。我将以下内容放在主函数中。 CefRefPtr cef; CefRequest::ReferrerPolicy origin = origin; cef->S
我是C++的新手,正在测试while循环以及C++的绝对速度及其对我的CPU的影响,但出现以下错误: Severity Code Description Project File Line Suppr
string foo; try { foo = "test"; // yeah, i know ... } catch // yeah, i know this one too :) {
当尝试在 Mac OS X 10.6 上使用 FFMPEG gem 时,ruby 会抛出一个 NameError 异常,如下所示: NameError: uninitialized constant
我做了一个程序来计算 View 的总宽度/高度(有时我想要总宽度,有时我想要总高度)。唯一的问题是:如果我正在计算宽度,我想添加一个额外的 10到总数。这是我当前的代码: func calculate
所以我只想从常规地址(字符串)中提取经度/纬度坐标。我查阅了 geokit gem 文档并按照记录的内容进行了操作,但我不断收到此错误:“NameError:未初始化的常量 Geokit::Geoco
为什么 perl -we '$c = $c+3' 上升 Use of uninitialized value $c in addition (+) at -e line 1. perl -we '$c
我有以下代码: class circularList { public: circularList() : data(0), next(this) {} public: int dat
我的情况 我正在 ASP.NET MVC4 应用程序中进行测试。我正在开发的应用程序部分将现代 WebSecurity/SimpleMembershipProvider 与正在逐步淘汰的遗留身份验证系
我是 Ruby on Rails 的新手,我想使用迁移生成 mysql 数据库。 我尝试过这个命令 ruby bin/rake db:drop db:create db:migrate --trace
我需要一些调试帮助,因为我遇到的错误真的很难。 这是一款具有复杂动画的游戏。然而,问题不在于 SpriteKit .我希望动画按照严格的顺序彼此跟随,所以我实现了 Operation 的子类: cla
这是一个示例代码: #include int main() { int n = 5; float v[n]; float sum; int i; for(i
我正在使用 SQL Server 2012 并尝试实现事务复制。我正在使用系统存储过程来创建发布和订阅。我成功地创建了这些东西,但是当我检查复制监视器时,它显示“未初始化的订阅”。 当我检查订阅的同步
我有以下脚本: use 5.12.4; use strict; use warnings; say "Enter a functionality:"; while (<>) { if (/ad
我已经阅读了有关 has_many 的文档和大量教程:通过 Rails 中的关系,但我终生无法掌握它的窍门。 我正在尝试向我的 current_user(devise) 添加一个组,并且我在 Grou
我正在尝试为移动 API 设置路由,它应该有一个版本化的 api-path。我已经可以让移动 Auth 工作了,这是在位于 的单独 Controller AuthController 中实现的。/co
我正在使用 luacheck(在 Atom 编辑器中),但对其他静态分析工具开放。 有没有办法检查我是否使用了未初始化的表字段?我阅读了文档( http://luacheck.readthedocs.
我有一家工厂,例如: FactoryGirl.define do factory :page do title 'Fake Title For Page' end end 并进行测试:
我是一名优秀的程序员,十分优秀!