关于指针的c/c++问题(双指针)

2024-04-26

自从我学习 c 和 c++ 课程以来已经有一段时间了,我对 c 指针很好奇(我将在我的示例中使用 new 关键字,即使我知道 malloc 是 C 方式)。我总是记得我的老师总是强迫我们使用指针,她永远不会接受数组的作业,她向我们证明,当您使用指针而不是数组时,汇编语言中需要的命令更少。我想继续这种良好的做法,但我似乎很难使用指针,特别是双指针。

假设我想创建一个词库而不使用 C++ 字符串数据类型,并且我有一个 char 类型的双指针。

int main()
{
   string fileName = "file.txt";
   char** wordBank = null;
   int wordCount = countWords(fileName); //somefunction to get word count
}

现在我需要为整个银行分配足够大的内存空间但我不确定如何做到这一点我相信它是这样的?

wordBank = new char*[wordCount];

现在我需要专门为每个单词的大小分配空间,我仍然不确定。

for(int i = 0; i < wordCount; i++)
{
   wordLength = getWordLength(fileName, i); // some function to get word length of each...
   //... word in the bank
   (*wordBank) = new char[wordLength];
}

好吧,我困惑的最后一部分是通过函数传递双指针。 假设我有一个函数可以让我操作整个单词,假设我只想传递这个单词,我将通过函数调用传递什么以及函数定义将包含什么。假设我想传递整个库和一个将移动指针的数字,我将通过函数调用传递什么以及函数定义将包含什么。通常对所有问题感到抱歉如果我尝试通过编写简短的程序自己回答这些问题,但我很难编译它。我很感谢我收到的回复。


分配银行:

wordBank = malloc(wordCount * sizeof(char *));

分配单个单词:

char *addWord(char **wordBank, size_t idx, char *word) {
  wordBank[idx] = malloc(strlen(word) + 1);
  // this is how you pass a word
  strcpy(wordBank[idx], word);
  return wordBank[idx];
}

// how you pass the wordBank:
addWord(wordBand, index, someWord);

但在汇编中拥有更多指令并不一定是坏事。在编程中,恒定的开销通常不是问题。我会用std::string and std::vector<string>并将我的时间花在真正的问题上。至少在调试 malloc 和 free、设计和测试 NULL 指针方面没有。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于指针的c/c++问题(双指针) 的相关文章

  • 检查数据库中是否存在记录

    我正在使用这些代码行来检查记录是否存在 SqlCommand check User Name new SqlCommand SELECT FROM Table WHERE user txtBox UserName Text conn int
  • 从 unsigned char* 到 char* 的转换无效

    这是一个代码 1 int main int argc char argv 2 3 signed char S psc 4 unsigned char U pusc 5 char C pc 6 7 C S 8 C U 9 10 pc psc
  • 如何使用 libclang 判断成员函数是 const 还是 volatile?

    我有一个实例CXCursor同类CXCursor CXXMethod 我想知道这个函数是否是const or volatile 例如 class Foo public void bar const void baz volatile voi
  • C++ 中可以使用匿名类作为返回类型吗?

    有没有办法在 C 中使用匿名类作为返回类型 我用谷歌搜索这可能有效 struct Test fun 但是这段代码无法编译 错误信息是 新类型不能在返回类型中定义 其实代码没有任何意义 我只是想弄清楚匿名类是否可以用作C 中的返回类型 这是我
  • 为什么下面的重叠比较总是评估为 true

    我不明白为什么以下代码有警告 指出重叠比较始终评估为真 接下来的语句永远不会被执行 QVariant MainModel data const QModelIndex index int role const if index isVali
  • 在 T4 代码生成中,如何从引用的程序集中获取类型?

    由于 T4 在项目上下文之外运行 因此我无权访问当前程序集或其他程序集 如何注册对引用程序集的访问 然后从中获取类型 我猜您想访问项目中建筑物的程序集 我在下面的示例代码中所做的是将一个名为 TestLib 的项目添加到我的解决方案中 我将
  • C 中的双重否定:是否保证返回 0/1?

    Is x 标准保证返回0 1 请注意 我是not询问 C 其中定义了 bool 类型 是的 在 C99 中 请参阅 6 5 3 3 4 逻辑非运算符的结果 是0如果其操作数的值比较 不等于0 1如果其操作数的值比较等于 0 结果具有类型in
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • 如何检查给定调用站点的重载决策集

    如何检查重载解析集 我在多个调用站点中使用了 4 个相互竞争的函数 在一个调用站点中 我期望调用一个函数 但编译器会选择另一个函数 我不知道为什么 这不是微不足道的 为了了解发生了什么 我正在使用enable if disable if打开
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • 这个元组创建习惯有名字吗?

    On the 增加邮件列表 http lists boost org Archives boost 2014 06 214213 php LouisDionne 最近发布了以下创建类似元组的实体的巧妙技巧 include
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • C# 从今天起 30 天

    我需要我的应用程序从今天起 30 天后过期 我会将当前日期存储在应用程序配置中 如何检查应用程序是否已过期 我不介意用户是否将时钟调回来并且应用程序可以正常工作 用户太愚蠢而不会这样做 if appmode Trial string dat
  • 来自用户定义文字的整数字符序列,以字符串作为参数

    目前 只有双精度数可以在用户定义的文字中生成字符模板 template
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • Cordova 上的 ClearCookiesAsync()

    我正在尝试使用 wp8 cordova 中的插件来清除 WebBrowser cookie 我已经让它与 JavaScript 进行通信 并且我的 c 文件中有类似这样的内容 using WPCordovaClassLib Cordova
  • 使用 ImageResizer 获取图像尺寸的最佳方法

    我正在将现有的 MVC 4 网站从自制用户文件上传切换为在上传时使用 ImageResizer 调整文件大小 我在文档中看到我不应该使用 System Drawing 但我无法找出任何其他获取图像尺寸的方法 尺寸是来自原始图像还是调整大小的

随机推荐

  • 浏览器不渲染 WOFF 字体 (@font-face)

    好的 我有一个无法解决的问题 我正在尝试研究 WOFF 字体在 Internet Explorer 10 中的用法 我从下载了套件字体松鼠 http www fontsquirrel com fontface 并根据包含的 CSS 和 HT
  • 嵌入来自 tiktok 的视频

    我有当前的作品 我想要的是获取视频的 URL 但它只显示未样式化的文本 async function start let url https www tiktok com tiagogreis video 68300596442332234
  • Wordpress 和 Drupal SSO/单点登录

    我已经在 Wordpress 中制作了我的前端网站 这对我来说很好 我想在 Drupal 中创建会员 员工区域 因为它具有更多 Google 文档和 Mediawiki 功能 我想知道我是否可以在两个站点之间共享登录信息 因此如果我在 Wo
  • 如何获取方法内部传递的参数的 nameof() ?

    我正在为我的项目寻找解决方案 我有一个Dictionary
  • C# Winforms 不规则的 Windows [重复]

    这个问题在这里已经有答案了 如何使用 WinForms 和 C 创建不规则形状的窗口 有几种不同的方法可以实现这一目标 一是用用TransparencyKey 正如尼夫勒在帖子中指出的那样 另一种是分配一个Region http msdn
  • 将 SQLite 与 Blazor WASM 结合使用有什么好处?

    我正在看这个Steve Sanderson 的视频演示了如何将 SQLite 与 Blazor Web Assembly 结合使用 https www youtube com watch v kesUNeBZ1Os我正在考虑在我的一个项目中
  • Javascript作用域变量可以切换大小写吗?

    在 C 中 您可以将变量的范围限定为 switch case 例如this https stackoverflow com a 2101514 773263 使用 javascript 我使用以下命令获得意外的令牌 const i 1 sw
  • Ruby 使用 JSON 序列化结构

    我正在尝试将一个简单的结构序列化为 JSON 它工作正常 但我无法让它从 JSON 创建该结构的实例 我正在尝试这样做 require rubygems require json Person Struct new name age jso
  • python print() 函数实际上是做什么的?

    我正在看这个question https stackoverflow com questions 1979171 how can i escape xff xfe to a readable string并开始想知道什么是print实际上确
  • java中.this和.class的含义

    假设我们有一个类名称 Home 有什么区别主页 this and 家庭班 它们指的是什么 主页 this Home this指的是当前实例Home class 该表达式的正式术语似乎是合格了这个 http java sun com docs
  • 如果ViewData有ViewBag,为什么TempData没有TempBag?

    为什么 TempData 没有像 ViewData 那样的动态字典对象 之所以没有 是因为没有人费心去实施它 但这是很容易做到的 例如 作为扩展方法 不幸的是 NET 尚不支持扩展属性 因此您无法完全获得您可能希望的语法 public cl
  • 重新格式化双向条形图以匹配示例

    我生成了这个条形图 使用此代码 s level margins fluid margins vp Volume 0 0 1L 0 718 0 690 2L 0 501 0 808 5L 0 181 0 920 MAP 0 0 64 0 43
  • C 中每个块复制一个文件块

    我试图将文件分成 x 个大小为 y 以字节为单位 的块 以便我可以单独复制每个块 我怎样才能做到这一点 尝试使用fread http www manpagez com man 3 fread char buffer ysize fread
  • 使用数据表中的“selectAll”按钮搜索后选择所有可见行

    我已经初始化了一个具有 id 的数据表example像这样 var table example DataTable aaSorting 4 asc select true dom Bfrtip buttons excelHtml5 exte
  • 当更新可用时,手动安装的 apk(不是从 Play 商店)会收到通知吗?

    我想在平板电脑上安装 apk 知道怎么做 我的平板电脑会收到来自 Play 商店的通知吗 该更新已在 Play 商店中准备就绪 我应该安装它吗 仅当满足以下两个条件时 您才会收到更新 在 Google Play 已安装的应用程序 选项卡中看
  • Flash 影片的 Div Z-Index 问题

    我有两个简单的 HTML div 一个包含 flash 电影 另一个 div 包含简单文本 现在我的问题是我必须将文本 div 放到 flash 电影 div 上 我正在做的是将两个 div 的位置设置为 CSS 中的 Absolute 并
  • 如何为 SonarQube 扫描配置 Jenkins 管道

    我正在尝试为我的项目配置詹金斯管道 但这里缺少一些东西 如果有人可以指出我做错了什么 下面是管道脚本 node stage SonarQube analysis requires SonarQube Scanner 2 8 def scan
  • 协议缓冲区和 UTF-8

    编码方案 多操作系统和 Endian nes 的历史导致了对所有形式的字符串数据 即所有字母表 进行编码方面的混乱 因此 协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF 8 并且我看不到任何接受 C wstring 的多态重载 那
  • 出现错误:User 类型的对象在 django python 中不可 JSON 序列化

    我是 django python 的新手 当我尝试从 3 个表获取数据时 出现错误Object of type User is not JSON serializable 任何人都可以帮我解释为什么我会收到此错误吗 在这里我添加了我的vie
  • 关于指针的c/c++问题(双指针)

    自从我学习 c 和 c 课程以来已经有一段时间了 我对 c 指针很好奇 我将在我的示例中使用 new 关键字 即使我知道 malloc 是 C 方式 我总是记得我的老师总是强迫我们使用指针 她永远不会接受数组的作业 她向我们证明 当您使用指