arrays - 是否可以通过引用第 n+1 个元素找到数组末尾的地址?
问题描述
我需要知道指针何时穿过整个数组 -> 位于它后面的第一个位置。c中的示例代码:
unsigned int ar[10];
char *pointer = (char*) ar;
while(pointer != (char*) &ar[10]){
*pointer++ = 0xff
}
此示例是否可以将数组的每个元素设置为 0xffffffff?
解决方案
原理是正确的,但是您忘记初始化指针并在错误的位置递增它。而是使用
unsigned int ar[10];
unsigned char *pointer = (unsigned char *)ar;
unsigned char *end = (unsigned char *)&ar[10];
while (pointer != end) {
*pointer++ = 0xff;
}
如果您在比较中增加指针,那么您将不会设置第一个字节并将写入一个字节超出限制。
但永远不要重新发明轮子。<string.h>
为此有一个功能:
unsigned int ar[10];
memset(ar, 0xff, 10 * sizeof (int));
// or if a static array,
memset(ar, 0xff, sizeof ar);
另一方面,如果您真的想将unsigned int
s 设置为 UINT_MAX,那么您可以明确:
for (size_t i = 0; i < 10; i++) {
ar[i] = UINT_MAX; // or you could use `-1` as well, as it is guaranteed to result in `UINT_MAX` after conversion.
}
推荐阅读
- python - 调用 POST 方法时,我的 python 烧瓶应用程序崩溃
- angular - 将字符串值添加到 json 结果中的所有对象
- batch-file - 在选择特定选项时包含另一个选项/文件
- localhost - 我无法使用 chrome 打开 localhost [错误 400]
- node.js - 具有单个文档字符串数组字段的服务器端分页
- flutter - Flutter 实现干净架构的方式
- javascript - 如何用实际日期和所有剩余日期填充数组 -1
- python - 使用 Python 将 JSON 转换为 Google 表格
- npm - postCss 不适用于 laravel 外部的 laravel-mix、scss 和 tailwindcss
- compression - 随机字符串的最佳压缩算法