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 函式功能 修改一位陣列元素的值,規則是 新值 原值...