c語言,int a,b和int a int b有什麼不同

2022-06-09 06:16:39 字數 5890 閱讀 6661

1樓:super丶

int a, b; 和 int a; int b;是一樣的。  作用域的話你應該考慮這個變數是全域性變數還是區域性變數。比如下面這段程式,a和b的作用域就是main函式,而c的作用域就是add函式,只有當執行add函式時才從系統內申請記憶體給c然後c只在add函式內有效,當add函式執行完後就會釋放c的記憶體。

a和b是在main函式執行完後再釋放。

如果不懂你把原題發給我我幫你看看。

#include

using namespace std;

int main()

add(a,b)

return 0;}

2樓:

int a,b;合法,int a;int b非法,因為b後少了分號。其餘沒有區別。

3樓:joker丶丶

程式設計練習題斐波那契數列遇到這樣的問題,int a,b,c=1執行結果錯誤,int a=1,b=1,c=1就正確

4樓:

這樣的宣告都是一樣的,但是,建議使用第二種,這樣的**的層次性,可讀性更好。

5樓:

已知:x^2-2x=2,將下式先化簡,再求值。

(x-1)^2+(x+3)(x-3)+(x-3)(x-1)請先閱讀下面的解題過程,然後仿造做下面的題已知:x^2+x-1=0,求:x^3+2x^2+3的值。

x^3+2x^2+3

=x^3+x^2-x+x^2+x+3

=x(x^2+x-1)+(x^2+x-1)+4=0+0+4

=4若:1+x+x^2+x^3=0,求:x+x^2+x^3+...+x^2004的值。

6樓:柒號的早晨

沒區別,只是後面的分開定義了

7樓:淦海瑤

沒區別,只是寫的字元多一點

8樓:匿名使用者

沒什麼不同,都是一樣的

int *a=b與int*a=&b有什麼不同

9樓:匿名使用者

這是典型的c語言指標題

int *a表示定義了一個int型的指標

*a=b表示指標a指向b,即把b賦值給*a;

&是取地址符,&b代表b在記憶體中的地址,*a=&b表示把b的地址賦值給*a。

利用編譯器編譯該**:

結果為:

拓展資料

*和&運算

(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時宣告p 時開闢的地址。顯然可以用賦值語句對記憶體地址賦值。

我們假設有這麼兩段記憶體地址空間,他們取值如下:(單位:h,16 進位制)

假設有這麼一段**:(假設開闢空間時p 被分配給了3001h、3002h 兩個位置)

int *p;

p=2003h;

*p=3000h

**p的值為多少?

**p=*(*(p))=*(*(2003h))=*(3000h)=3000h。

那麼&&p、*(&p)和&(*p)又等於多少?

&&p=&(&(p))=&(3001h),此時出錯了,3001h 是個常數怎麼可能有地址呢?

*&p=*(&(p))=*(3001h)=2003h,也就是*&p=p。

10樓:南北

*a=b表示a指標所指向的資料,等於b。*a=&b表示a指標所指向的資料,等於b的地址。

1、int *a=b是說把b的值賦值給指標a(*a), int*a=&b是說讓指標a(*a)指向b的地址。 舉個例子說: int b=5,c=9。

2、int *a1=b;----------------------1。

4、b=c;-------------------------3 這個時候*a1=5,*a2=9 。因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5 。在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5。

5、但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候 b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的, 即*a2=9。

11樓:匿名使用者

int *a=b是說把b的值賦值給指標a(*a), int*a=&b是說讓指標a(*a)指向b的地址。

舉個例子說:

int b=5,c=9

這個時候*a1=5,*a2=9 。因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5 。在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5 。

但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候 b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的, 即*a2=9。

12樓:一口沒水的枯井

1 答案

不同點在於a的值不一樣

2 關於指標

在32位機器裡,指標型別為4個位元組,一般用16進位制的形式來表示3 分析

int*a;表示a被宣告為int型指標型別(1)在int *a=b;裡

若b是整數12,則 a的值為 0x0000000c在c語言中 int*a=b;是報錯的,需要強制轉換才行 int*a=(int*)b

(2)在int *a=&b;裡

表示把b的地址賦給a,加入b的地址是 0xff00ff00則a的值也為0xff00ff00

當然,在每次程式執行時,b被分配的地址是隨機的,所以不一定是0xff00ff00

4 用一個小示例驗證

#include

int main()

5 執行結果

13樓:oo怨念

int *a=b

這種寫法是錯的,你不能用一個int型的變數去初始化一個int*型別的變數。

14樓:匿名使用者

int *a=b;

宣告一個int *型指標變數a,並將其值初始化為b的值,這裡b應該也是個int *型指標變數

int *a=&b;

宣告一個int *型指標變數a,並將其值初始化為變數b的地址值,這裡b應該是個int型變數

15樓:火狐狸

我是學習計算機的,我來說吧

int *a=b是說把b的值賦值給指標a(*a),int*a=&b是說讓指標a(*a)指向b的地址。

舉個例子說,

int b=5,c=9

這個時候*a1=5,*a2=9

因為在說第一步時已經把b的值,也就是5傳給*a1,所以*a1=5在第二步時,把b的地址,也即是&b傳給了*a2,這個時候*a2=5但是在第三步時,b的值變成了c的值,也就是9,我們知道這個時候b的地址早就傳給*a2了,所以,*a2和這個時候的b的值是一樣的,即*a2=9。

謝謝把分給我。

16樓:匿名使用者

簡單:int *a=c;定義指標a並賦初值c;

相當於int *a;//定義指標變數a

a=c; //給a賦值c

所以int *a=b;初值為b

int *a;

a=b;

int *a=&b;初值為b的地址

int *a;

a=&b;

對指標的操作要慎重,最好定義的時候賦初值,使用的時候判斷有效性

17樓:戲水兒

int *a=b

int*a=&b

這兩個a都是int*型別的指標,第一句是a=b,b應該也是一個指標,第二句是將b這個變數儲存的地址賦值給了a。

18樓:匿名使用者

int *a=b 將變數b的值賦給*a

int*a=&b 使a指向b

c語言程式設計 int *a和int a [ ]有區別嗎?

19樓:a羅網天下

int *a是定義一個整型指標變數a。

int a [ ]沒有這種寫法。

int *a

1、定義a是一個陣列。

2、每一個陣列的元素是一個指標,指向一個整數。

(int *)a 將指標變數a強制轉換為整型指標,說明a一般不是一個整型指標,也可以是個整型指標。

int (*a)

1、定義a是一種指標。

2、a指向一種整數陣列。

陣列的建立:在建立陣列時,我們必須定義陣列的型別和大小,陣列的大小不能為0,陣列中的元素型別都是相同的。

int arr[10];//內必須是常量/常量表示式(3+8),不能是一個變數(x...)

陣列的初始化:在陣列建立時,我們也要必須為陣列初始化。

int arr1[3] = ;

int arr2 = ;//在這裡,我們arr[3]裡邊的數字可以不用寫;

int arr3[3] = ;//也是可以的,只是把最後一個數初始化為0了而已

int arr4[3] = ;//是不可以的,不能超過陣列長度

char arr5[3] = ;//因為是字元型別,所以98其實就是字元'b'

char arr6 = "abcdef";

特點

1、陣列是相同資料型別的元素的集合。

2、陣列中的各元素的儲存是有先後順序的,它們在記憶體中按照這個先後順序連續存放在一起。

3、陣列元素用整個陣列的名字和它自己在陣列中的順序位置來表示。例如,a[0]表示名字為a的陣列中的第一個元素,a[1]代表陣列a的第二個元素,以此類推。

20樓:匿名使用者

int *a和int a [ ] 的區別,就等價於指標與陣列的區別。

指標與陣列的區別:

1、指標的本質是一個與地址相關的複合型別,它的值是資料存放的位置(地址);陣列的本質則是一系列的變數。

2、陣列名對應著(而不是指向)一塊記憶體,其地址與容量在生命期內保持不變,只有陣列的內容可以改變。指標可以隨時指向任意型別的記憶體塊,它的特徵是"可變",所以我們常用指標來操作動態記憶體。

3、當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

21樓:落楓秋痕

int a 這樣的定義是不符合語法的吧。除非 後面這樣寫int a=;

int *a;則是 指定義一個int 型別的指標 用來指向一個用來存放int型資料的地址。

陣列名 所表示的意思是 該陣列起始地址。不是有沒有區別的問題。它們根本是在不同的情況下使用的。

你可以用陣列名錶示陣列第n個元素 *(a+(n-1)) 你也可以定義 一個指標指向 第n個元素

int *p=&a[n-1];

***********************************====

你所給的例子中使用是合法的 形參表示型別。int a表示一個整型陣列。

22樓:盤國英譚婷

int*a指的是定義一個指向int型別資料的指標a,inta指的是定義一個整數變數a,

int*

a跟int

*a是一樣的,只是int

*a更嚴謹,

比如,int

*a,b;

只有a是指標變數

int*

a,b;

容易讓人覺得a和b都是指標

C語言中c m和c m的區別,C語言中 「 c m」和「c m」的區別是什麼?

是取址運算bai符,取變數在內du存單元中的首zhi地址dao,取地址運算子的操作物件必須專是記憶體單元 如變數 數屬組元素等 是間接訪問運算子,間接訪問指標所指向的物件,運算子的操作物件必須是指標 地址 因此 c m是把m在記憶體中的地址賦給c這個指標指向的變數c m是把m的地址賦給c這個指標 1...

c語言a和a有什麼區別,C語言中 a 和 a 有什麼區別

1 本質區別 雙引抄號襲 裡面的是字串,而單引號裡面的代表字元。2 輸出區別 str a 輸出的就是a這個字母 str a 輸出的測試65 3 底層區別 用單引號引起的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。1 用 對包bai含的du 代表字元常量,其zhi值為...

c語言指標和函式的問題,C語言指標和函式的問題。!

樓主你好。include int main printf 修改前,陣列元素的值 段1 print array a,5 printf 修改後,陣列元素的值 段2 change values a,5,3 print array a,5 return 0 函式功能 修改一位陣列元素的值,規則是 新值 原值...