这段代码是否有效(和定义的行为)?
int &nullReference = *(int*)0;
这两个g ++以及铛++编译它没有任何警告,即使使用-Wall,-Wextra,-std=c++98,-pedantic,-Weffc++...
当然,引用实际上不是null,因为它无法访问(这意味着取消引用空指针),但我们可以通过检查其地址来检查它是否为null:
if( & nullReference == 0 ) // null reference
当你学习C++时,或者至少当我通过C++ Primer学习它时,指针被称为它们指向的元素的"内存地址".我想知道这是多少.
例如,做两个元素*p1并*p2拥有属性,p2 = p1 + 1或者p1 = p2 + 1 当且仅当它们在物理内存中相邻时?
我想知道违反我在下面列出的假设的架构.此外,我想知道所有架构的假设是否都是错误的(也就是说,如果它们中的任何一个完全错误的话).
sizeof(int*)== sizeof(char*)== sizeof(void*)== sizeof(func_ptr*)
无论指向哪种数据类型,给定体系结构的所有指针的内存中表示都是相同的.
指针的内存中表示与与体系结构相同的位长的整数相同.
指针数据类型的乘法和除法仅被编译器禁止.注意:是的,我知道这是荒谬的.我的意思是 - 是否有硬件支持禁止这种不正确的用法?
所有指针值都可以转换为单个整数.换句话说,哪些架构仍然使用分段和偏移?
递增指针相当于添加sizeof(the pointed data type)指针存储的内存地址.如果p是int32*则p+1则等于4字节后的内存地址p.
我最习惯在连续的虚拟内存空间中使用指针.对于这种用法,我通常可以将它们视为数字线上的地址.请参阅堆栈溢出问题指针比较.
我知道这是非常基本的,但对我来说有点混乱.
我读了:   
一个指针只不过是一个多地址,并且指针变量只是可变量存储地址.
当我们将变量的地址存储i在指针变量中时p,我们说它p指向i.
int i, *p = &i;
p指向i.
为了访问指针指向的对象,我们使用*(间接)运算符.  
如果
p是指针则*p表示p当前指向的对象.
现在我很困惑,我应该调用什么p-   指针或指针变量?  
附加:指针是否始终与地址相同?
我知道指针存储了它们指向的值的地址,但是如果直接在屏幕上显示指针的值,则会得到一个十六进制数字.如果数字正是指针存储的数字,那么当说
pA = pB; //both are pointers
你正在复制地址.那么在处理像ints和bools 这样的非常小的项目时,使用指针会不会有更大的开销?
动态分配的内存(使用new和malloc运算符分配)的碎片整理如何在C++中工作?
当我突然想到指针只是一个存储变量的内存地址的变量时,我正在读指针,所以每个整数都应该作为指针.然后我创建了一个小程序,它发出警告,但它以某种方式工作.
int main()
{
    int i,j;
    i=3;
    j=&i;
    printf("%d\n%d\n%d",i,j,&i);
    return 0;
}
输出是
3
1606416600
1606416600
那么,为什么要添加额外的*如果正常的int工作呢?
另一个问题是关于以下计划的输出
int main()
{
    int a[] = {1,2,3,4,5,6,7};
    int *i,*j;
    i=&a[1];
    j=&a[5];
    printf("%d\n%d\n%d",j,i,j-i);
    return 0;
}
输出:
1606416580
1606416564
4
为什么ji = 4而不是16?
这些天我正在学习C编程语言.我有一个关于指针的问题.
教科书说指针存储内存地址,使用printf("%p",pointer)我们可以显示这个指针在我们的内存中指向的位置.
但每个指针都有一个类型,如int *pointer,long *p等等.int *pointer表示"p是指向int的指针".
我的问题,如果我们写
int *p,i;
p=&i;
*p=99;
如果指针只包含地址信息,程序怎么知道应该用多少位数来存储整数99?因为整数可以是16位int或32位long.
所以我想知道内存中的int指针是否不仅存储地址信息,还存储类型信息?
这很简单.比方说我有:
char x = -1;
然后在记忆中,我(很可能?)
 11111111
(01234567)
所以我的问题是,如果我写的&x是地址,我会回到第0位或第7位的地址,这是最重要还是最不重要的位?
在32位整数的情况下怎么样?
我有两个void *,即void *a和void *b.让我们说a是在0x804ae0和b现在0x804aec.我该如何比较两者?我想检查地址a是否低于地址b.