變數指標總結,堆疊

2021-07-03 04:33:25 字數 1016 閱讀 2163

#include "stdafx.h"

#include "stdio.h"

int *c1;

const *b1;

void fuzhi()

static int a=3;

//   printf("%d\n",&a);

const  int b=5;

printf("%d\n",&b);

b1=&b;

int c=6;

printf("%d\n",&c);

c1=&c;

int main(int argc, char* argv)

int i=1;

int *p;

//通過位址獲取值

//    printf("%d\n",&i);

printf("%d\n",*(int *)1244996);

p=&i;

printf("%d\n",*p);

fuzhi();

//通過位址獲取

a的值,輸出為

3,說明

a還儲存著

printf("%d\n",*(int *)4345228);  

// 通過位址獲取b,c

的值,輸出並不是和原來的一樣,說明b,

c被釋放了

printf("%d\n",*(int *)1244904);

printf("%d\n",*(int *)1244900);

//下面的輸出和上面的值一樣,說明上面兩句確實是獲取了1244904和1244900位址的內容

printf("%d\n",*b1);

printf("%d\n",*c1);

return 0;

解釋:從位址中可以看出static int a=3; a的位址是4345228,而b,c,

i位址都是124490..;由此可得

a 應該是放在堆中,

fuzhi

()函式銷毀後還會存在,而b,

c,i應該是放在棧中,函式銷毀後他們都會釋放。

堆疊指標理解

堆疊指標sp在片內ram128b中開闢棧區,並隨時跟蹤棧頂位址。它是按 先進後出 的原則訪問資料。開機復位後,微控制器棧底位址為07h。主要用來儲存臨時資料,區域性變數和中斷 自程式的返回位址。堆疊指標總是指向棧頂元素。所以資料入棧的時候,堆疊指標先加1,再壓棧。向上增長方式。和計算機的方式一樣。出...

斷點指標和任務堆疊指標

斷點資料 把任務被中止執行時的位置叫做斷點,把當時存放在cpu的pc psw和通用暫存器等各暫存器中的資料叫做斷點資料。斷點指標 任務被終止時 在pc暫存器中 cpu的當前程式執行指標。任務堆疊指標 指向任務堆疊棧頂的指標 乙個任務包含 任務控制塊 任務堆疊 任務 ucos進行任務切換時,osctx...

堆疊記憶體和指標

首先,堆疊都是記憶體。棧是記憶體上面的,先進後出。堆是記憶體上面的,先進先出。堆疊和記憶體的關聯 乙個32位程式,那麼32位位址只能表示4g的空間。那麼棧就只有4g,而堆就有你的實際記憶體大小。這句話是錯的,正確的是,棧 堆 全域性靜態區 4g 注意 電腦核心使用2g,自己則只能使用最大2g,而執行...