小编aka*_*tis的帖子

对于指针p,在极端情况下p <p + 1是否可以为假?

对于指针变量p,p <(p + 1)是否为假是否可能?请解释一下你的答案.如果是,在哪种情况下会发生这种情况?

我想知道p + 1是否会溢出并且等于0.

例如,在64位PC上使用GCC-4.8进行C语言程序:

int main(void) {
   void *p=(void *)0xFFFFFFFFFFFFFFFF;

   printf("p      :%p\n", p);
   printf("p+1    :%p\n", p+1);
   printf("Result :%d\n", p<p+1);
}
Run Code Online (Sandbox Code Playgroud)

它返回:

p      : 0xffffffffffffffff
p+1    : (nil)
Result : 0
Run Code Online (Sandbox Code Playgroud)

所以我相信这种情况是可能的.对于无效的指针位置,它可能发生.这是我能想到的唯一解决方案.还有其他人吗?

注意: 不做任何假设.考虑任何可能发生这种情况的编译器/平台/架构/操作系统.

c c++ pointers pointer-arithmetic

47
推荐指数
4
解决办法
3232
查看次数

有没有办法指示 Pylint 哪些库应该被视为第 3 方?

我在某些导入库不可用并且是 3rd 方的环境中运行 pylint。因此,pylint 会为这些导入生成错误类 wrong-import-order C0411。

有没有办法指示哪个应该被视为第 3 方?

  • 派林特 2.1.1
  • 蟒蛇 3.6.3

pylint python-3.x

6
推荐指数
1
解决办法
593
查看次数

C/C++指向POD结构的指针也指向第一个结构成员

我可以假设C/C++结构指针总是指向第一个成员吗?
例1:

typedef struct {
 unsigned char  array_a[2];
 unsigned char  array_b[5];
}test;
//..
test var;
//..
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,&var总是指向array_a吗?在上面的例子中,是否可以将指针强制转换为unsigned char指针并分别访问每个字节?
例2:

function((unsigned char *)&var,sizeof(test));
//...
//...
void function(unsigned char *array, int len){
 int i;
 for( i=0; i<len; i++){
    array[i]++;
 }
}
Run Code Online (Sandbox Code Playgroud)

这会正常吗?

注意:我知道字符在结构中是字节对齐的,因此我假设上面结构的大小是7个字节.

c c++ struct pointers

1
推荐指数
2
解决办法
1027
查看次数

标签 统计

c ×2

c++ ×2

pointers ×2

pointer-arithmetic ×1

pylint ×1

python-3.x ×1

struct ×1