国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

使用C語言判斷棧的方向實例

2020-01-26 14:19:31
字體:
來源:轉載
供稿:網友

這一問題主要是如何判讀出先后入棧的變量的地址大小,比如有a, b兩個變量一先一后被定義,如果a的地址大于b的地址,則說明是以低地址方向增長的,反之,往高地址方向增長。在寫C程序的時候不能簡單直接的定義兩個變量來比較它們的地址大小,因為這樣很有可能編譯器會做優化,最終導致結果不真實。為避免這種編譯器優化的情況,可以采用將變量定義到函數中,然后遞歸調用該函數。

例如下面的代碼:

#include <stdio.h>static int stack_direction = 0;static void FindStackDirection(){  static char *addr = NULL;  auto char dummy;  if (NULL == addr) {    addr = &dummy;    FindStackDirection();  //遞歸調用,讓dummy兩次被定義,并一先一后入棧  } else {    if (&dummy > addr) {  //兩次地址相比較,后入棧的dummy地址大于先前的地址則說明是往高地址增長      stack_direction = 1;    } else {      stack_direction = -1;    }  }}int main(int argc, char const *argv[]){  FindStackDirection();  if (1 == stack_direction) {    puts("stack grew upward");  } else {    puts("stack grew downward");  }  return 0;}

以上這篇使用C語言判斷棧的方向實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 塔城市| 泽州县| 托克托县| 望城县| 汶上县| 江源县| 佛学| 连江县| 迭部县| 河东区| 上饶县| 马关县| 闻喜县| 沁水县| 巴马| 时尚| 留坝县| 宜州市| 石林| 崇州市| 山东省| 汨罗市| 四平市| 营山县| 博白县| 扬州市| 菏泽市| 呈贡县| 临洮县| 达拉特旗| 邯郸县| 绥棱县| 顺平县| 徐州市| 乌拉特前旗| 亚东县| 安庆市| 康定县| 西盟| 若尔盖县| 迁西县|