在这里,我们将看到为什么要在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关键字进行别名。如果我们违背诺言,就会出现一些问题。