与 char *、unsigned char * 和signed char * 别名

2024-03-09

A char *(和合格的变体)可以为任何东西起别名。 是signed char * and unsigned char *(及其合格的变体) 不受此限制?

换句话说,我了解到申请是个好主意restrict to char*函数参数,如果我不希望它们为其他类型的指针参数别名(因为它们可以为它们别名):

int func(struct foo *f, char * restrict s /*different object*/);

我可以放弃restrict像这样的有符号和无符号字符变体的关键字?

int sfunc(struct foo *f, signed char *s /*different object*/);
int ufunc(struct foo *f, unsigned char *s /*different object*/);

也可能指向同一类型的有符号和无符号变体 互相别名?换句话说,如果我期望一个指向 int 的指针和一个指向 unsigned 的指针,并且它们应该指向不同的对象,那么int * and unsigned *参数各为restrict-合格的?

/* i and u should be different */
int uifunc(int * /*restrict?*/ i, unsigned * /*restrict?*/ u); 

规则是(C11 6.5/7):

对象的存储值只能由具有以下类型之一的左值表达式访问:

  • 与对象的有效类型兼容的类型,
  • 与对象的有效类型兼容的类型的限定版本,
  • 与对象的有效类型相对应的有符号或无符号类型,
  • 与对象有效类型的限定版本相对应的有符号或无符号类型的类型,
  • 聚合或联合类型,其成员中包含上述类型之一(递归地包括子聚合或包含联合的成员),或者
  • 一种字符类型。

char, signed char and unsigned char都是字符类型(参考:6.2.5/15)。前面的项目符号还回答了有关签名和未签名类型的问题。

请记住,固定宽度类型是 typedef,它可能引用各种其他类型,因此请小心。

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

与 char *、unsigned char * 和signed char * 别名 的相关文章

  • 简单的C问题

    作为我正在进行的项目的一部分 我必须开始学习 C 我已经开始解决其中的 欧拉 问题 并且遇到了麻烦 我必须找到 1000 以下的所有 3 或 5 的倍数之和 有人可以帮助我吗 谢谢 include
  • 从 Dropbox C# 下载文件[重复]

    这个问题在这里已经有答案了 我正在尝试下载 Dropbox 中的 pdf 文件 我需要将其保存到本地计算机中 可以是任何文件夹C Users User Desktop例如 这是我一直在使用的代码 public void DownloadPd
  • 在列表中查找匹配项的最简洁方法

    在列表中查找内容的最佳方式是什么 我知道 LINQ 有一些不错的技巧 但我们也可以获取有关 C 2 0 的建议 让我们对这个常见的代码模式进行最佳重构 目前我使用这样的代码 mObjList is a List
  • 如何将异常对象序列化为 xml 字符串

    我想要类似的东西 try code here catch Exception ex stringXML Exception toXML 这样 stringXML 的值就是
  • MVC 中的 Blazor:组件被渲染,但 @onclick 不起作用。连接问题

    我正在尝试在 net core 3 MVC 项目中使用 Blazor 我使用了一些教程来做到这一点 例如https fizzylogic nl 2019 08 18 integrating blazor in an existing asp
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • 使用 pthread_cond_signal 优雅地终止线程被证明是有问题的

    我需要发射一堆线程 并希望优雅地将它们拉下来 我正在尝试使用pthread cond signal pthread cond wait实现这一目标 但遇到了问题 这是我的代码 首先是thread main static void thrma
  • 是否可以获取指向装箱非托管值类型的指针?

    是否可以获取指向装箱非托管值类型的指针 而无需编写对每个支持的类型进行强制转换的大型 switch 语句 就像是 object val Contains a boxed unmanaged value such as int long by
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • 使用 Node.js 访问用 C++ 编写的 SDK

    我有一个用 C 语言编写的 SDK 可以与我的扫描仪设备进行通信 我需要开发一个可以访问扫描仪设备的电子应用程序 我知道有很多库可用于扫描仪 但我想使用这个 SDK 因为它允许我访问设备的完整功能 而且它是由设备制造商提供的 那么 有没有什
  • 在标准 C 中将 int 转换为 string

    我是 C 新手 我正在寻找一个可以调用函数进行转换的示例int串起来 我发现itoa但这不是标准 C 的一部分 我还发现sprintf str d aInt 但问题是我不知道所需的 str 的大小 因此 我如何传递输出字符串的正确大小 有多
  • 为什么 char 数组需要 strcpy 而 char star 不需要 - 在 C 中使用结构

    我对这段代码有一个误解 typedef struct EXP int x char name char lastName 40 XMP main XMP a a name eaaa a lastName strcpy a lastName
  • 如何正确地将十六进制转义添加到字符串文字中?

    当你有C语言的字符串时 你可以在里面直接添加十六进制代码 char str abcde a b c d e 0x00 char str2 abc x12 x34 a b c 0x12 0x34 0x00 这两个示例在内存中都有 6 个字节
  • C# 中的快速字符串解析

    在 C 中解析字符串最快的方法是什么 目前我只是使用字符串索引 string index 并且代码运行合理 但我忍不住认为索引访问器所做的连续范围检查必须添加一些东西 所以 我想知道我应该考虑哪些技术来增强它 这些是我最初的想法 问题 使用
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • 清理 TPL 中的 CallContext

    根据我使用的是基于 async await 的代码还是基于 TPL 的代码 我在逻辑清理方面得到了两种不同的行为CallContext 我可以设置和清除逻辑CallContext如果我使用以下异步 等待代码 正如我所期望的 class Pr

随机推荐

  • 通过接口枚举 - 性能损失

    我和我的同事就通过索引访问列表的性能发生了一些争议 这非常接近圣战 VS通过枚举器 为了根据一些事实进行操作 我编写了以下测试 static void Main string args const int count 10000000 va
  • 当内存带宽受限时 SSE 和 AVX 的性能

    在下面的代码中 我更改了 dataLen 并获得了不同的效率 dataLen 400 SSE 时间 758000 us AVX 时间 483000 us SSE gt AVX dataLen 2400 SSE 时间 4212000 us A
  • 使用 Android Profiler 时应用程序不断崩溃

    我的应用程序正在执行一些位置跟踪并在需要时更新数据库 该应用程序已运行 2 天 没有任何问题 现在我尝试使用 Android Profiler Android Studio 3 01 但是 一旦我打开它 它就会运行几秒钟 然后开始使应用程序
  • 维基百科示例中高斯-牛顿方法的实现

    我对 Python 比较陌生 正在尝试实现高斯 牛顿方法 特别是维基百科页面上的示例 高斯 牛顿算法 https en wikipedia org wiki Gauss E2 80 93Newton algorithm 3个例子 以下是我到
  • 如何获取字符串中第一行的范围?

    我想更改第一行文本的格式NSTextView 给它不同的字体大小和粗细 使其看起来像标题 因此 我需要第一行的范围 一种方法是这样 guard let firstLineString textView string components s
  • 在 PYMC3 中使用自定义可能性会导致“expected ndarray”错误

    我正在尝试在 PYMC3 中使用自定义分布 广义极值或 GEV 分布 我已经编写了一些代码来计算这个 但我得到一个错误 ValueError 需要一个 ndarray 应用导致错误的节点 MakeVector dtype float64 l
  • 如何在sql中找到运行序列的峰值和谷值

    我在 athena 中有一个数据集 因此出于此目的 您可以将其视为 postgres 数据库 数据样本可以在这里看到sql小提琴 http www sqlfiddle com 17 4b3732 2 这是一个示例 create table
  • 布局 xml 文档中的 Android“tools”命名空间

    根据这里的问题 Android 布局文件中的 tools context 是什么 https stackoverflow com questions 11078487 android whats toolscontext in layout
  • Ti-Calculator 上的多语言编程

    我对在 Ti 84 plus 计算器上使用除 Ti Basic 之外的不同语言 如 Java C 和 Python 进行编程感兴趣 我的计算器是否支持此功能 如果不支持 市场上是否有任何计算器可以执行此操作 提前致谢 这个想法是 当我在家无
  • NSTimer 计时器WithTimeInterval:不工作

    在我的项目中实现之前 我已经创建了一个带有计时器的测试应用程序 这是我第一次使用计时器 但问题是当我使用计时器实现时 NSTimer timerWithTimeInterval target selector userInfo repeat
  • git 仓库中 Composer 包冲突;如何在推送到远程时取消跟踪文件但避免删除文件

    我通过 Composer 在我的 Web 应用程序上安装了一个包 并将包文件夹添加到 gitignore 同时提交composer json and composer lock 为了部署到我们的服务器 我们推送到服务器上的裸 Git 远程服
  • 如何延迟 AngularJS 即时搜索?

    我有一个似乎无法解决的性能问题 我有一个即时搜索 但它有点滞后 因为它开始搜索每个keyup JS var App angular module App App controller DisplayController function s
  • C++中高效比较字符串的方法

    像这样将一个字符串与另一个字符串或字符串文字进行比较是否有效 string a string b if a test or if a b 我的同事让我使用 memcmp 对此有何评论 Thanks Yes use a b 不要听你的同事的话
  • 如何在 Docker Compose 中初始化 MySql 数据库

    设想 我在 Spring 中开发了一个微服务 它使用 mysql 8 数据库 该数据库必须初始化 创建数据库 一些表和数据 在我的主机上 我使用 data sql 和 schema sql 脚本初始化了数据库 问题是 我必须设置 sprin
  • 在表单之间传递数据

    我有两种形式 第一的 Form1有一个组框 一些标签和一个列表框 我按下一个按钮 然后新的Form2打开并包含一些文本 我想将文本传输到Form2到列表框中Form1 到目前为止 我所做的是将列表框的修饰符设置为public然后将此代码放入
  • 如何从视图访问 django 模型属性?

    我有一个 Django 模型 class DebtRequest models Model from user models ForeignKey User related name debt requests from user to u
  • 从资源文件夹或SD卡访问文件有什么区别

    我正在开发一个应用程序 我必须使用三种不同大小的文件 1mb 5mb 15mb 我搜索了一下 然后知道我们可以将这些视频保存在资产文件夹中并可以使用这些视频 其次 我了解到我们可以将这些视频保存在资产文件夹中 并且安装时我们可以将所有视频移
  • Android 将 ParseObject 发送到另一个 Activity

    我有一个 ParseObject 我想发送到另一个活动 public class HWMMatch extends ParseObject implements Serializable public HWMMatch public Par
  • 查找数组中是否缺少元素的复杂性

    我正在尝试编写一个函数 用 C 语言 来检查数组是否包含所有元素 0 和 size 1 之间 例如 如果数组的大小为 3 则它应该具有 0 1 2 以任何顺序 问题是 在没有额外数组的情况下执行此操作的最有效的复杂性是多少 我的尝试的复杂性
  • 与 char *、unsigned char * 和signed char * 别名

    A char 和合格的变体 可以为任何东西起别名 是signed char and unsigned char 及其合格的变体 不受此限制 换句话说 我了解到申请是个好主意restrict to char 函数参数 如果我不希望它们为其他类