檢視文章
c語言的幾點心得,變數的深入理解
2011-04-02 10:34
// datatest.cpp : 定義控制台應用程式的入口點。
////時間上 變數名的這個字串 在記憶體中是沒得被儲存的,是通過相應的暫存器來完成的。暫存器相當於乙個資料與記憶體之間的乙個橋梁,
//這與變數的作用完全相同。
//如果一定要追問的話,那都把每個變數名當做乙個無名的暫存器吧。
//詳細過程看彙編原理。
#include "stdafx.h"
int _tmain(int argc, _tchar* argv)
;char *b=&a;
char *c="a";
char **d=&c;
//指標變數名要單獨佔乙個位址來儲存這個變數。
printf("char%d\n",sizeof(char));
printf("int bit=%d\n",8*sizeof(int));
printf("char a is %c\n",a);
printf("char a 10 %d\n",a);
printf("char a 16 %#x\n",a);
printf("&a %#x\n",&a);
scanf("%c",&c);//scanf 函式找到最後的位址,把資料存放到記憶體中。
printf("char c 10 %c\n",c);//列印的是a得位址空間。
printf("char c 10 %d\n",*c);
printf("char c 16 %#x\n",c);
printf("&c %#x\n",&c);//這個列印的c變數名得位址空間,在堆疊段中。
printf("pooint c %p\n",c);//將對應記憶體中的值翻譯成16進製制的數。
printf("a'sadress-c'address==%d",&a-c);//&a與c中都是放的位址制 ,為啥子不能相運算呢,是以為他們的型別不匹配。
//指標變數中都存放的是位址值 ,我們為啥子要用不同的型別來宣告不同的變數。用乙個int型別的值不行嗎?答案當然是否定的,
//這是因為吧這樣宣告是為了 ,確定所指向的記憶體單元的資料型別。如果不指明資料型別,是不能夠進行運算的,雖然記憶體中存放的都是01**。
//因此指標變數有兩個作用。指明位址,宣告資料型別。
//實際char是整形資料型別,裡面存放的是01** ,只是我們在翻譯的過程中,將其翻譯成了字元。這也是字元資料與整形資料能進行轉換的原理(至少我是這樣認為的)
//printf("%d\n",b[1]);
//printf("%d\n",*(c+1));
}
C語言中bool變數的深入理解
目錄 在一些高階語言當中,為了能夠完成更好的邏輯判斷,因此就有了bool型別,bool型別的變數值只有true和false兩種。而在c語言中,一般認為0為假,非0為真。這是因為c99之前,c90是沒有bool型別的的。但是c99引入了 bool型別 bool就是乙個型別,不過在新增標頭檔案stdbo...
深入理解C語言 深入理解指標
關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...
深入理解C語言 深入理解指標
關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...