比较初始化 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);
}
假设我有一个指针
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);
}