最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C語(yǔ)言判斷棧的方向?qū)嵗?/h1>
 更新時(shí)間:2016年12月29日 09:24:58   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇使用C語(yǔ)言判斷棧的方向?qū)嵗?。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦

這一問(wèn)題主要是如何判讀出先后入棧的變量的地址大小,比如有a, b兩個(gè)變量一先一后被定義,如果a的地址大于b的地址,則說(shuō)明是以低地址方向增長(zhǎng)的,反之,往高地址方向增長(zhǎng)。在寫(xiě)C程序的時(shí)候不能簡(jiǎn)單直接的定義兩個(gè)變量來(lái)比較它們的地址大小,因?yàn)檫@樣很有可能編譯器會(huì)做優(yōu)化,最終導(dǎo)致結(jié)果不真實(shí)。為避免這種編譯器優(yōu)化的情況,可以采用將變量定義到函數(shù)中,然后遞歸調(diào)用該函數(shù)。

例如下面的代碼:

#include <stdio.h>

static int stack_direction = 0;

static void FindStackDirection()
{
  static char *addr = NULL;
  auto char dummy;
  if (NULL == addr) {
    addr = &dummy;
    FindStackDirection();  //遞歸調(diào)用,讓dummy兩次被定義,并一先一后入棧
  } else {
    if (&dummy > addr) {  //兩次地址相比較,后入棧的dummy地址大于先前的地址則說(shuō)明是往高地址增長(zhǎng)
      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語(yǔ)言判斷棧的方向?qū)嵗褪切【幏窒斫o大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

醴陵市| 贡嘎县| 洞口县| 天台县| 会东县| 防城港市| 门源| 徐水县| 弋阳县| 宁安市| 青海省| 左贡县| 普陀区| 铁力市| 驻马店市| 金川县| 宿松县| 神池县| 辽宁省| 额尔古纳市| 乌鲁木齐市| 彭水| 满城县| 兰考县| 洛扎县| 塔城市| 福鼎市| 广汉市| 白朗县| 布尔津县| 临桂县| 阿荣旗| 同心县| 柏乡县| 长沙市| 马公市| 巢湖市| 麻江县| 潼南县| 思茅市| 宁波市|