C语言 如何以极简的方式获得唯一的指针地址?

w41d8nur  于 2024-01-06  发布在  其他
关注(0)|答案(2)|浏览(96)

我需要一个唯一的指针地址。
我不确定我是否需要给指针给予一个值,或者它是否在声明时得到一个地址。或者我是否需要初始化一个普通变量和/或初始化它。

  1. int * my_ptr;
  2. int * unique_address = my_ptr;

字符串
vs

  1. int my_val;
  2. int * unique_address = &my_val;


vs

  1. int my_val = 5;
  2. int * unique_address = &my_val;


请以引用<= C11标准、K&R 2或POSIX的形式为您的答案提供证明

ufj5ltwl

ufj5ltwl1#

第二种和第三种变体是正确的。变量在声明时被分配一个地址,并且您使用&前缀将该地址存储在指针中。(ISO/IEC 9899:201 x委员会草案,6.2.4(2))

xkftehaa

xkftehaa2#

如果你只想要有效的地址而不需要底层对象(事实上你将拥有指针本身)。

  1. void *foo = (void *)&foo;

字符串
您的示例:
第一个无效。

  1. int * my_ptr;
  2. int * unique_address = my_ptr;


my_ptr确实有一个不确定的值,因为它没有被初始化。你可以使用一个对它的引用来代替。

  1. int * my_ptr;
  2. int * unique_address = &my_ptr;

展开查看全部

相关问题