小编use*_*574的帖子

一个过去的对象结束指针

我知道只有当两个指针指向"分配"到分配给同一个对象的存储的某个地方时,或者如果它们是NULL,或者只要它没有被解除引用而超过对象的末尾,就会定义指针比较.

我在标准的'C'意义上使用"对象".

是否有一些特殊的分配用于比较两个指针 - 每个指针超过对象的结尾,而不是比较一个过去的结束指针和一个引用实际对象的指针表达式.鉴于以下定义:

 char arr[100];
 char *pend = &arr[99];
 char *pa = pend+1;
 char *pb = pend+1;
Run Code Online (Sandbox Code Playgroud)

pa == pb保证有意义的比较还是调用UB,因为-pa和pb都指向arr.

换句话说,从标准的角度来看,比较pa和pb以及比较pa和&arr[99]+1?之间是否存在语义差异?看起来很明显但是:)

c c++

7
推荐指数
1
解决办法
1147
查看次数

为什么int*数组不能直接初始化但char*数组可以?

为什么int*数组不能直接初始化,但char*数组可以?我知道它们不一样,但导致这种情况发生的确切差异是什么(请解释原因)?

我知道为什么不能int* p[]直接初始化.
我不知道怎么可能char* name[]

例如:

char* name[] = { "Mostafa Chamran", "Mehdi Zeinoddin", "Ebrahim Hemmat" };
Run Code Online (Sandbox Code Playgroud)

int* p[3] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

给出错误:转换无效

我不知道要搜索什么来查找相关问题,所以我不知道是否存在相同的问题

c++ arrays pointers

0
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×2

arrays ×1

c ×1

pointers ×1