【问题标题】:If a pointer variable has the same address as its value, is it really pointing to itself? [duplicate]如果一个指针变量和它的值有相同的地址,它真的指向自己吗? [复制]
【发布时间】:2015-10-27 03:56:27
【问题描述】:

例如 - 在下面的代码中,是一个指向自身的指针吗?

#include<stdio.h>  
int main(){    
    int* a;    
    int b = (int)&a;    
    a = b;    
    printf("address of a = %d\n", &a);    
    printf("  value of a = %d\n", a); 
}  

如果 a 不是指向自身的指针,那么同样的问题再次提出:指针可以指向自身吗?还有,自指向指针有什么用处?

【问题讨论】:

  • 如果 a 的类型为 void *,则该示例更有意义。 int * 指向 int(不是 int *),但 void * 可以指向 void *。
  • 嗯,奇怪的是,这与副本中的代码完全相同(包括相同的错误)。转发因果报应?
  • “可能”重复?如果这不是复制品——切割、干燥、锁起来并扔掉钥匙——那我不知道是什么!措辞是逐字逐句的,一直到标点符号和代码示例!我还不得不说,它闻起来很浓(臭)的家庭作业。
  • 好吧,我不赞成这个和原来的。

标签: c pointers


【解决方案1】:

您的代码格式不正确,您的编译器应该会出错。 a = b; 失败:int 不能隐式转换为 int *

假设你修复它说:

int *a = (int *)&a;

那么可以说a 指向内存中存储a 本身的相同字节。但是,它会导致通过*a 读取或写入未定义的行为(严格的别名违规)。

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多