比较初始化 int 指针的两种方法

Comparing two ways of initializing an int pointer

假设我有一个指针

int *x;

然后我需要让指针指向一个int值,比如说42。

我应该这样做吗:

   *x = 42;

或者这个:

  int y = 42;
  x = &y;

?通常的做法是什么?

在此声明之后

int *x;

指针 x 等于 NULL(如果它在任何函数外声明)或具有不确定的值。所以像

这样取消引用指针
*x = 42;

调用未定义的行为。

你可以这样写

int y = 42;
x = &y;

x = malloc( sizeof( int ) );
*x = 42;

当你这样做时:

int *x = 42;

您将指针 x 分配给内存情况 42,这会导致分段错误。 做你想做的正确方法是:

int y = 42;
x = &y;

x获取y的地址(&y)

#include <stdio.h>

int main()
{
      int y=42;
      int x=&y;
      printf("\nY = %d is at adress X = %d \n",y,x);
}