C語言之變數、常量(define\const)、變數的宣告和定義
阿新 • • 發佈:2019-01-02
記憶體地址
#include<stdio.h> #include<stdlib.h> #include<Windows.h> void main(){ int num = 10; int num1 = 20; int num2 = 30; //十進位制,記憶體地址 printf("%d,%x",num,&num); printf("%d,%d", num1, num2); //開啟提示視窗 MessageBoxA(0,"content","title",0); //開啟txt檔案的3中方式 system("F:\\a.txt"); system("\"F:\\a.txt\""); system("notepad F:\\a.txt"); system("pause"); }
變數初始化
變數如果不初始化,可以編譯成功,但是執行的時候,可能報錯
每當應用程式開啟時,作業系統為其分配記憶體,當應用程式初始化執行時,就會往記憶體單元裡面寫資料,當作業系統回收時,不會清空記憶體單元,所以存在大量
垃圾資料,如果變數不進行初始化,就會預設讀取垃圾資料,有些垃圾資料導致程式崩潰
我目前只能這樣理解了:如果一個值a沒有初始化,那麼直接printf("%d",a); 是不能編譯通過的,這個理所當然,但是如果在執行printf("%d",a);之前,先進行printf("%x",&a); 之後,在輸出十進位制就是可以的,這裡是不是因為由於輸出記憶體單元值,在應用內產生了垃圾值,然後由於沒有初始化,就拿垃圾值不確定的輸出了十進位制值??常量#include<stdio.h> #include<stdlib.h> #include<Windows.h> void main(){ //嚴格區分大小寫 int a; int A; //printf("%x,%x",&a,&A);//為什麼去掉這行註釋就不會報錯了?? printf("\n"); printf("%d,%d", a, A); getchar(); }
#include<stdio.h> #include<stdlib.h> #include<Windows.h> void main(){ //常量方式1 const int a = 5; printf("我的年齡是%d\n", a); const char nameStr[] = "wyf"; const int age = 30; printf("我叫%s,%d歲\n",nameStr,age); //常量方式2 修改一次可以改變全域性 define本質就是替換 #define X 100 //不能有; printf("我有%d個\n", X); printf("我有%d個\n", X*X); #define PI 3.1415 int R = 100; printf("周長=%f,面積=%f\n", 2 * R*PI, PI*R*R);//f是實數 #define name "lilili" printf("我叫%s",name); getchar(); }
我的年齡是5
我叫wyf,30歲我有100個
我有10000個
周長=628.300000,面積=31415.000000
我叫lilili
變數的宣告和定義
全域性變數有定義和宣告的差別,
全域性變數不賦值視作宣告,宣告可以有多個,預設值為0
全域性變數賦值視作定義,定義僅有一個
區域性變數沒有宣告和定義的差別
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
//全域性變數的宣告,宣告可以有多個,預設值為0
int a;
int a;
int a;
/*全域性變數賦值視作定義,定義僅有一個*/
//int b = 1;
//int b = 2;
//全域性變數的宣告,宣告可以有多個
void run();
void run();
void main(){
//int c = 9;
//int c = 10;
printf("%d",a);
run();
getchar();
}
void run(){
}