為什麼在 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。為了解決此問題,我們可以使用嚴格別名。

使用 restrict 限定符關鍵字。它指示我們向編譯器承諾不會將任何內容與 restrict 指標關鍵字形成別名。如果我們違背承諾,則會出現一些問題。

更新於: 2019-07-30

140 次瀏覽

開啟您的職業生涯

完成課程,獲得認證

開始學習
廣告
© . All rights reserved.