为什么在C中需要严格的别名?

在这里,我们将看到为什么要在C语言中使用严格的别名。在讨论该部分之前,让我们看一个代码,并尝试分析输出。

示例

#include<stdio.h>int temp = 5;int* var = &temp;int my_function(double* var) {   temp = 1;   *var = 5.10; //this will change the value of temp   return (temp);}main() {   printf("%d", my_function((double*)&temp));}

输出结果

1717986918

如果我们调用函数my_function,则它将返回1。我们也可以使用my_function((double *)&temp)来调用它。应该返回1,但是在这里我们可以看到它返回了其他值。该代码仅返回常量1。要解决此问题,我们可以使用严格别名。

使用限制限定符关键字。这表明我们向编译器承诺,某些东西不会使用指针limit关键字进行别名。如果我们违背诺言,就会出现一些问题。