A. 在c語言中什麼是定義變數
不是很理解您問的問題,你是有否了解一點C基礎。
我只能猜測一下回答
例:定義變數
int
Num;
//定義了一個變數。int
整型,是標准C++中的數據類型。Num
是變數名。
int
Num1,
Num2,
Num3;
//
定義了3個整型變數,num1,num2,num3。(在同一行聲明同一類型變數,變數名之間用逗號間隔,語句末尾仍然是以;封號結束)
int
Num
=
5;
//定義一個
int型變數Num並且將值初始化為5;
例:輸入輸出操作
如果是C++,那麼首先包含頭文件
#include
<iostream>
using
namespace
std;
//然後在main
函數裡面寫上:
int
Num1,
Num2//
定義變數
cin
>>
Num1;
//輸入操作,對變數Num1進行寫入。
Num2
=
Num1;
//將變數Num1的值賦給Num2。
cout
<<
"Num2=
"
<<
Num2
<<
endl;
//
輸出變數num2的值。(endl是回車換行。)
B. c語言的變數定義
C語言中變數遵循「先定義後使用」的原則:
1、定義變數的格式:數據類型 變數名;
首先要強調的一點是:變數的定義是一條語句,每條語句都是以分號結尾的。故定義完變數,後面不要漏掉「;」分號。
在變數定義中,「數據類型」表示想要存儲什麼類型的數據就定義什麼類型的變數。
如想要存儲整數就定義成 int 型;想要存儲小數就定義成 float 型或 double 型;想要存儲字元就定義成 char 型等等。
「變數名」就是你想給這個變數起個什麼名字,通常都是用字母、數字與下劃線組合而成。比如:
「int i;double price;double goods_price2」等等。
就表示定義了一個整型變數 i、小數型變數price、goods_price2;
2、變數定義完成後,接下來就是使用變數,為變數賦值。
將一個值放到一個變數中,這個動作叫「賦值」。通俗點講,「給變數賦值」意思就是將一個值傳給一個變數。
賦值的格式是:
變數名 = 要賦的值;
它的意思是將=右邊的數字賦給左邊的變數。比如:
i = 3;
這就表示將 3 賦給了變數 i,此時 i 就等於 3 了。
3、變數的定義和賦值,可以分成兩步寫,也可以將它們合成一步,而且事實上,在實際編程中用得最多的也是合二為一的寫法。
形式如下:
數據類型 變數名 = 要賦的值;
比如:int i = 3;
就表示定義了一個變數 i,並把 3 賦給這個變數。它與
int i;
i =3;
是等價的。
在定義變數時也可以一次性定義多個變數,比如:
int i, j;
這就表示定義了變數 i 和 j。這里需要強調的是,當同時定義多個變數時,變數之間是用逗號隔開的,千萬別寫成分號。這是很多新手最容易犯的錯誤,即將逗號和分號記混了。
同樣也可以在定義多個變數的同時給它們賦值:
int i = 3, j = 4;
中間還是用逗號隔開,最後別忘記輸入分號。
最後需要注意的是,在較老的 C89/C90 標准(也稱 ANSI C 標准)中,變數只能在程序的開頭定義,或者說變數定義的前面不能有其他非聲明或非定義的語句。
(2)c語言定義變了擴展閱讀:
在主回答中,提到了變數定義時,變數名通常都是用字母、數字與下劃線組合而成,但是實際上,變數名也不是隨便組合的,變數定義需要遵循一定的規范,否則容易產生歧義,影響整體程序代碼 的可讀性。
所以在定義變數的時候,要注意以下命名規范:
(1)、變數名的開頭必須是字母或下劃線,不能是數字。實際編程中最常用的是以字母開頭,而以下劃線開頭的變數名是系統專用的。命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。
(2)、變數名中的字母是區分大小寫的。比如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。當標識符由多個片語成時,每個詞的第一個字母大寫,其餘全部小寫。
比如: int CurrentVal;
這樣的名字看起來比較清晰,遠比一長串字元好得多。
(3)、變數名絕對不可以是C語言關鍵字,不能有空格。
(4)、變數名的長度應當符合「min-length && max-information」原則。
C 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。
C. 為什麼在C語言中任何變數定義後,其數據類型不能改變,只能改變其值
在C語言中,任何類型的變數在定義後,當給變數賦值時,給他們在內存中分配的空間就是一定的了,不同的數據類型在內存中占的大小不同,這時我們就只能根據數據類型給變數賦值,不能超出類型的最大限制…
因此變數的類型不能隨便改動,否則會發生內存溢出,或者內存錯亂的現象…改變值的大小時也要注意,不能超出了類型的取值范圍……
D. C語言定義變數的奇怪現象
下面你的程序出現了重復定義的錯誤,即一個程序中不能同時定義同名的兩個變數,你在程序中int a; 後變數a的作用域是全局的,定義第二個int a;後作用域也是全局的,這是絕對不允許的。
上面的代碼中,你在for循環中定義了int b; 變數b的作用域就在for循環體內,循環一次後局部變數b就會消失,當執行第二次for循環時,會重新定義局部變數b,不會出現重復定義。因此編譯時不會出錯!!!
E. C語言的定義變數問題
auto
(1)auto關鍵字在C語言中只有一個作用,那就是修飾局部變數。
(2)auto修飾局部變數,表示這個局部變數是自動局部變數,自動局部變數分配在棧上。(既然在棧上,說明它如果不初始化那麼值就是隨機的······)
(3)平時定義局部變數時就是定義的auto的,只是省略了auto關鍵字而已。可見,auto的局部變數其實就是默認定義的普通的局部變數。
F. 關於C語言的定義方式
位域 有些信息在存儲時,並不需要佔用一個完整的位元組, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態, 用一位二進位即可。為了節省存儲空間,並使處理簡便,C語言又提供了一種數據結構,稱為「位域」或「位段」。所謂「位域」是把一個位元組中的二進位劃分為幾 個不同的區域, 並說明每個區域的位數。每個域有一個域名,允許在程序中按域名進行操作。 這樣就可以把幾個不同的對象用一個位元組的二進制位域來表示。 一、位域的定義和位域變數的說明位域定義與結構定義相仿,其形式為: struct 位域結構名 { 位域列表 }; 其中位域列表的形式為: 類型說明符 位域名:位域長度 例如: struct bs { int a:8; int b:2; int c:6; }; 位域變數的說明與結構變數說明的方式相同。 可採用先定義後說明,同時定義說明或者直接說明這三種方式。例如: struct bs { int a:8; int b:2; int c:6; }data; 說明data為bs變數,共占兩個位元組。其中位域a佔8位,位域b佔2位,位域c佔6位。對於位域的定義尚有以下幾點說明: 1. 一個位域必須存儲在同一個位元組中,不能跨兩個位元組。如一個位元組所剩空間不夠存放另一位域時,應從下一單元起存放該位域。也可以有意使某位域從下一單元開始。例如: struct bs { unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /*從下一單元開始存放*/ unsigned c:4 } 在這個位域定義中,a占第一位元組的4位,後4位填0表示不使用,b從第二位元組開始,佔用4位,c佔用4位。 2. 位域的長度不能大於一個int的長度,也就是說不能超過32位。 3. 位域可以無位域名,這時它只用來作填充或調整位置。無名的位域是不能使用的。例如: struct k { int a:1 int :2 /*該2位不能使用*/ int b:3 int c:2 }; 從以上分析可以看出,位域在本質上就是一種結構類型, 不過其成員是按二進位分配的。 二、位域的使用 位域的使用和結構成員的使用相同,其一般形式為: 位域變數名·位域名 位域允許用各種格式輸出。 main(){ struct bs { unsigned a:1; unsigned b:3; unsigned c:4; } bit,*pbit; bit.a=1; bit.b=7; bit.c=15; printf("%d,%d,%d\n",bit.a,bit.b,bit.c); pbit=&bit; pbit->a=0; pbit->b&=3; pbit->c|=1; printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c); } 上常式序中定義了位域結構bs,三個位域為a,b,c。說明了bs類型的變數bit和指向bs類型的指針變數pbit。這表示位域也是可以使用指針的。 程序的9、10、11三行分別給三個位域賦值。( 應注意賦值不能超過該位域的允許范圍)程序第12行以整型量格式輸出三個域的內容。第13行把位域變數bit的地址送給指針變數pbit。第14行用指針 方式給位域a重新賦值,賦為0。第15行使用了復合的位運算符"&=", 該行相當於: pbit->b=pbit->b&3位域b中原有值為7,與3作按位與運算的結果為3(111&011=011,十進制值為 3)。同樣,程序第16行中使用了復合位運算"|=", 相當於: pbit->c=pbit->c|1其結果為15。程序第17行用指針方式輸出了這三個域的值。 為了節省空間,可以把幾個數據壓縮到少數的幾個類型空間上,比如需要表示二個3位二進制的數,一個2位二進制的數,則可以用一個8位的字元表示之。 struct { char a : 3; char b : 3; char c : 2; } ; 這個結構體所佔空間為一個位元組,8位。節省了空間。
滿意請採納
G. C語言變數定義
C語言中變數遵循「先定義後使用」的原則:
1、定義變數的格式:數據類型 變數名;
首先要強調的一點是:變數的定義是一條語句,每條語句都是以分號結尾的。故定義完變數,後面不要漏掉「;」分號。
在變數定義中,「數據類型」表示想要存儲什麼類型的數據就定義什麼類型的變數。
如想要存儲整數就定義成 int 型;想要存儲小數就定義成 float 型或 double 型;想要存儲字元就定義成 char 型等等。
「變數名」就是你想給這個變數起個什麼名字,通常都是用字母、數字與下劃線組合而成。比如:
「int i;double price;double goods_price2」等等。
就表示定義了一個整型變數 i、小數型變數price、goods_price2;
2、變數定義完成後,接下來就是使用變數,為變數賦值。
將一個值放到一個變數中,這個動作叫「賦值」。通俗點講,「給變數賦值」意思就是將一個值傳給一個變數。
賦值的格式是:
變數名 = 要賦的值;
H. C語言中定義一個變數a,其地址還會不會變了像a=b,意思是值變了,地址沒變那怎麼變化a的地址
變數a的地址是不能變的,當程序被載入時,操作系統會為它分配好地址,且一經分配,不能再改變!當然,每一次程序運行時,操作系統為a分配的地址可以不同。
有以下幾點常常另初學者感到困惑,現舉例加以解釋:
int b,c,*a;
a=&b;
語句a=&b;並沒有改變a的地址,它只是改變了a這個箱子中裝的東西。如果你在語句a=&b;的前後用printf("%d",(int)&a);輸出a的地址,就會發現它們是一樣的。如果後面再來個a=&c;則printf("%d",(int)&a);的輸出也一樣!
關鍵是要區分以下幾點:
a,表示a的值,即它裝的東西,具體到這個例子,a裝的是另一個int型變數的地址。如果a不是const類型的,則它裝的東西可以改變。比如,這里先裝的是b的地址(指針變數是用來裝地址的),後改成了c的。
&a,當然就表示a自己的地址了,你可以將a想像成一個箱子,它的地址就是這個箱子的編號。
*a,因為a是一個指針,*a就表示a指向的變數的值,即b或c的值(具體要看a裝的是誰的地址,即a指向誰),也即*a=b或*a=c。
現假設a裝的是b的地址,那有:
a=&b,即a的值等於b的地址。
*a=b=*(&b),這里*的作用是取出某個地址中的值。因為a的值是b的地址,因此*a取出的是b的值,同理(&b)是b的地址,*(&b)取出的也是b的值!
分析一下a,b,c的內存模型(即它們在內存中是怎樣表示的、關系又是怎樣的),理解這些就不難了,你邊學邊體會吧!
I. C語言變數定義
類型說明符
變數名稱
賦值表達式。這是基本的。
比如:int
a=1+2;
char
b='b';定義了一個整數型變數a
其值為1+2就是3,定義了一個字元型變數b,b的值為字元『b』。類型說明符變數名稱還可以加修飾說明,比如前面加上const表示這是一個不能修改值得常量等等。
J. C語言定義變數問題
struct person zhangsan;
struct person *lisi;
zhangsan.age=10;
lisi->age=10; ---- 這個樣子使用會出異常的。
struct
person
zhangsan,是定義一個結構體變數,系統會給他分配內存來存放。
struct
person
*lisi,是定義一個結構體指針,系統只會給指針分配空間,指針指向的內存是一個隨機值,是不能訪問的,想lisi->age的話,就必須先分配內存才可以。