在C中取消引用变量并将其地址分配给指针变量有什么区别?

阿泽姆·穆扎米尔(Azeem Muzammil)

请参阅下面的两个代码!

int main() {
    int a = 12;
    int *p;
    *p = a;
}

和这段代码,

int main() {
    int a = 12;
    int *p;
    p = &a;
}

在第一段代码中,将指针取消引用为this *p = a,在第二段代码中,variabe的地址a设置为指针变量。

我的问题是这两段代码有什么区别?

阿德里安·摩尔

在您的第一段代码中:

int main() {
    int a = 12;
    int *p;
    *p = a;
}

您有严重的不确定行为,因为您要尝试的是将值赋给当前指向aint变量但是,尚未分配“地址”,因此它将具有一个任意-无效-值!一些编译器可能会初始化为零(或),但这仍然是一个无效地址(在大多数系统上)。p ppNULL

您的第二个代码段是“声音”,但就目前而言,实际上并没有实现任何目的:

int main() {
    int a = 12;
    int *p;
    p = &a;
}

在这里,您正在为指针变量;分配一个值(即addressp在这种情况下,p现在指向a变量(即,它的值是地址a)。

因此,如果您将这样的代码附加到第二个代码段的末尾:

*p = 42;

然后打印出的值a,您会看到其值已从最初指定的更改1242

随时要求进一步的澄清和/或解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

分配给null的变量与未分配的其他变量有什么区别

AngularJS:从函数返回数据并将其分配给变量

将左移运算的结果直接分配给变量与C中的左移分配运算之间有什么区别?

使用“ c.fetchall()”与仅将“ c.execute(SELECT ....”)分配给变量之间有什么区别?

分配给引用类型变量的指针/引用的隐藏值是什么?

从数组中分离对象并将其分配给变量

从qtextedit获取文本并将其分配给变量

仅将变量内联到另一个表达式中,将表达式分配给变量VS有什么区别?

将指针分配给变量vs将指针分配给C中的数组

导入函数并将其分配给变量

评估命令并将其分配给变量

从文本中获取值并将其分配给变量

如何从MySQL中读取双列并将其分配给C#双变量?

VB.Net列出MySQL中的所有用户并将其分配给变量

返回字符串数组并将其分配给C中的变量

遍历dataframe列中的值与将变量分配给column中的数据之间有什么区别?

从对象中提取整数并将其分配给变量

选择第n行并将其分配给变量

从输入中读取整数并将其分配给变量

从函数返回数组并将其分配给变量

C。从文件中扫描行的特定部分,并将其分配给某个变量

C#-从JSON响应中获取值并将其分配给变量

从数组中调用元素并将其分配给变量?

将指针类型转换为 &(int*) 和 (int*)& 并将其分配给某个指针变量时有什么区别?

在 C 中,如果将双指针分配给值,为什么指针变量为 0?

在 C++ 中,文字 3 和取消引用值为 3 的变量的结果有什么区别?

选择属性的特定部分并将其分配给变量

在 Swift 中声明一个类类型的变量并将其分配给不同的变量

在 Swift 中将枚举分配给变量时,{} 和 = 之间有什么区别?