1樓:匿名使用者
b[i]是指b陣列中的第i+1個元素,假如i=2,b陣列中值為1,2,3,4,5則b[i]=3,
a[b[i]]其實也就是a[3],就是a中的第4個元素
2樓:荒漠般蒼涼
計算優先順序的問題,相當於先算出裡面b[i]的值返回給陣列a然後計算
c語言中a表示一個陣列,a[i++]與a[++i]到底有什麼區別?
3樓:l語言之父
a[i++]和a[++i]的區別:
相同點:i都加1,都使i的值變成下一個元素的序號。
異同點:a[i++]中i++是後自增,必須先使用當前元素的值再使用下一個元素的值,a[++i]中++i是前自增,可以直接使用下一個元素的值。
例子:# include
int main ()
;int i = 0;
printf("%d\n",a[i++]);//本輸出的值為1,因為是i++,所以是先使用a[0]的值,再加上1,即先輸出a[0]的值。
i = 0;
printf("%d\n",a[++i]);//本輸出的值為2,因為++i,所以直接使i加1,即輸出a[1]的值。
return 0;}
4樓:匿名使用者
舉個例子給是說吧
int narray[4] = ;
int i = 0;
int a = narray[i++];
i = 0;
int b = narray[++i];
//上面這個例子中,最後 a = 7,b = 4,//i++ 是使用i的值,然後使用完以後再自增1//++i 是先把i自增1,然後再使用i的值//所以a = narray[i++];就相當於a = narray[i]; i = i + 1;
//b = narray[++i]; 就相當於 i = i + 1; b = narray[i];
//這麼說你應該明白了吧
5樓:倒黴熊
a[i++] 相當於 a[i] i=i+1a[++i] 相當於 i=i+1 a[i]也就是說 一個先
使用i的值,然後改變i的值,一個先改變i的值,然後使用i的值。
例如 如果一開始 i=3 則 a[i++] 就是 a[3] 而 a[++i]就是a[4]
c語言中的a[b[i]-'a']是什麼意思
6樓:砍侃看
把b[i]的值減去a的ascii碼值作為陣列a的底數
7樓:林聲飄揚
a[b[i]-'a']
=>a陣列下標為常量表示式 b[i]-'a'=>b[i]-97
a陣列下標為表示式 b[i]-97的值
8樓:全能騎師
a[b[i]-97]能明白了麼?
c語言中*a是什麼意思啊?和陣列一個用法嗎?
9樓:克魯伊夫式轉身
*a=i,就是bai說將i的值賦予*a,使指標
dua指向的地址中存入i的值。*n=*n+1也很好理解,比如指標zhin指向的地中之前dao存入的
回值為5,則上式的意答思就等同於*n=5+1,指標n指向的地址中將存入數值6。a++的意思就是a指向的地址向後移一位。比如之前a指向陣列b[0]的地址,則之後將指向b[1]。
10樓:匿名使用者
1、這是一個指標變數
2、和陣列不一樣,陣列可以根據陣列下標查詢資料,指標取值要加地址偏移量
11樓:安若曦在路上
若定義:int *a=null;
則*a表示一個整形的指標變數,並對其進行初始化。
int arry[10]=;
陣列名arry也相當於一個指標。內
兩者基本可以容
看做相同。
12樓:千島j玉葉
這是個呼叫函抄數,沒有返回值,
先是把襲兩個地址賦bai值給a和n,du
*a是一個指向整zhi數型別的指標變數,*a=i就是dao把i得值賦值給*a,
*n=*n+1;就是把*n得值加1再賦值給*n;
a++;這個語句就是把a的值加1再使用
13樓:匿名使用者
int *a表示a是一個抄指標,或者也可以是一個陣列名,你可以理解為陣列
既然a是指標,那麼在指標前面加*號表示對該指標所指向的地址取值
所以*a=i;就是把i的值賦值給a指標所指向的地址的值,說起來有些拗口,其實就是說改變了a這個地址記憶體的值
*n=*n+1;也是一個道理,表示n指向的地址的值加1
a++;表示a地址加1,就是說本來a指向0x0000,那麼現在就變了,a會指向另外一個地址,那麼這個地址對應的值也會相應的改變。
建議:先找一本c語言的書,把指標一章的基本概念多理解一下,這些都是基礎的東西,需要多體會。
14樓:匿名使用者
*a表示指標;
除了定義階段,*a和a[0]是一樣的
15樓:匿名使用者
1. 定義陣列
int a[10]
a既是陣列的名字,也是陣列的地址,相當與從a這個地址連續專分配了10個int記憶體地址
2.我們可
16樓:匿名使用者
你看一下「c程式設計」的」指標」一章
c語言中的陣列是什麼意思?
17樓:手機使用者
把具有相同資料型別的若干變數按有序的形式組織起來,
以便於程式處理,這些資料元素的集合就是陣列,按照陣列
元素的型別不同,可分為:數值陣列、字元陣列、指標陣列
結構陣列等各種類別。
陣列說明的一般形式為:
型別說明符 陣列名[常量表示式],......;
其中型別說明符可以是任一種基本資料型別或構造資料型別
陣列名是定義的陣列識別符號。常量表示式表示資料元素的個
數,也就是陣列的長度。
對陣列型別的說明應注意:
1)陣列的型別實際上是陣列元素的取值型別。
2)陣列名的書寫應符合識別符號的書寫規範。
3)陣列名不能與其他變數名相同。
4)常量表示式表示陣列元素的個數,但是其下標從0開始計算
5)不能在方括號中用變數來表示元素的個數,但是可以用符號
常數或常量表示式。
6)允許在同一個型別說明中,說明多個陣列和多個變數。
陣列元素的表示方法
一般比較簡單就是陣列名[下標]來引用,先定義後用,如果
是小數的話,直接自動取整。
陣列賦值分為:初始化賦值和動態賦值
初始化賦值一般形式為:
static 型別說明符 陣列名[常量表示式]=;
static表示靜態儲存型別,c語言規定只有靜態儲存陣列和外部陣列
才可做初始化賦值。
c語言對陣列的初始化賦值還有幾個規定:
1)可以只給部分元素賦值。
2)只能給元素逐個賦值,不能給陣列整體賦值。
3)如不給可初始化的陣列賦初值,在在陣列說明中,可以不給出陣列
元素的個數。
下面看一下多維陣列
主要看一下二維陣列,其他的就可以用二維陣列類推得到
二維陣列的型別說明的一般形式是:
型別說明符 陣列名[常量表示式1][常量表示式2]...;
在c語言中二維陣列是按行排列的
二維陣列的表示方法:
陣列名[下標][下標]
二維陣列的初始化
二維陣列初始化也是在型別說明時給各下標變數賦以初值。 二維陣列可
按行分段賦值,也可按行連續賦值。
二維陣列的初始化還應該注意:
1)可以只對部分元素賦初值,未賦初值的元素自動取為0。
2)如對全部元素賦初值,則第一維的長度可以不給出。
字元陣列:
用來存放字元變數的陣列稱為字元陣列。
c語言允許用字串的方式對陣列作初始化賦值。例如:
static char c=; 可寫為:
static char c=; 或去掉{}寫為:
sratic char c="c program";
用字串方式賦值比用字元逐個賦值要多佔一個位元組, 用於存放字串結
束標誌'\0'。上面的陣列c在記憶體中的實際存放情況為: c program\0`\0'是
由c編譯系統自動加上的。由於採用了`\0'標誌,所以在用字串賦初值時一
般無須指定陣列的長度, 而由系統自行處理。在採用字串方式後,字元數
組的輸入輸出將變得簡單方便。 除了上述用字串賦初值的辦法外,還可用
printf函式和scanf函式一次性輸出輸入一個字元陣列中的字串, 而不必
使用迴圈語句逐個地輸入輸出每個字元。
void main()
printf("%s\n",c);
注意在本例的printf函式中,使用的格式字串為"%s", 表示輸出的是一
個字串。而在輸出表列中給出陣列名則可。 不能寫為: printf("%s",c);
void main()
char st[15];
本例中由於定義陣列長度為15, 因此輸入的字串長度必須小於15,
以留出一個位元組用於存放字串結束標誌`\0`。 應該說明的是,對一個字
符陣列,如果不作初始化賦值,則必須說明陣列長度。還應該特別注意的是,
當用scanf函式輸入字串時,字串中不能含有空格,否則將以空格作為串
的結束符。例如執行例4.8,當輸入的字串中含有空格時,運**況為:
input string:this is a book this 從輸出結果可以看出空格以後的字元
都未能輸出。 為了避免這種情況, 可多設幾個字元陣列分段存放含空格的
串。程式可改寫如下:
lesson
void main()
本程式分別設了四個陣列, 輸入的一行字元的空格分段分別裝入四個陣列。
然後分別輸出這四個陣列中的字串。在前面介紹過,scanf的各輸入項必須以
地址方式出現,如 &a,&b等。但在例4.8中卻是以陣列名方式出現的,這是為
什麼呢?這是由於在c語言中規定,陣列名就代表了該陣列的首地址。 整個
陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列char c[10],在
記憶體可表示如圖4.2。設陣列c的首地址為2000,也就是說c[0]單元地址為2000。
則陣列名c就代表這個首地址。因此在c前面不能再加地址運算子&。如寫作
scanf("%s",&c);則是錯誤的。 在執行函式printf("%s",c) 時,按陣列名c
找到首地址,然後逐個輸出陣列中各個字元直到遇到字串終止標誌'\0'為止。
字串常用函式:
用於輸入輸出的字串函式在使用前應包含標頭檔案"stdio.h",使用其他字串
函式則應包含標頭檔案"string.h".下面介紹幾個常用的字串函式:
1)字串輸出函式 puts 格式:puts(字元陣列名) 功能:把字元陣列中的字元
串輸出到顯示器。
#include"stdio.h"
main()
2)字串輸入函式gets 格式:gets(字元陣列名) 功能:從標準輸入裝置上
輸入一個字串。
#include"stdio.h"
main()
tips:gets函式並不以空格作為字串輸入結束的標誌,而只是以回車作為輸入
結束,這是與scanf不同的部分
3)字串連線函式strcat 格式:strcat(字元陣列名1,字元陣列名2)
功能:把字元陣列2中的字串連線到字元陣列1中字串後面,並刪去字串
1後的串標誌"\0",本函式返回字元陣列1的首地址。
#include"string.h"
main()
4)字串拷貝函式strcpy 格式:strcpy(字元陣列名1,字元陣列名2)
功能:把字元陣列2中的字串拷貝到字元陣列1中,串結束標誌 "\0"也一同
拷貝,字元陣列2也可以是一個字元常量,就相當於把一個字串賦予一個字元陣列
#include"string.h"
main()
5)字串比較函式strcmp格式:strcmp(字元陣列1,字元陣列2) 功能:
按照ascii碼順序比較兩個陣列中的字串,並有函式返回值返回比較結果
#include"string.h"
main()
a[i]=n;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}例二:
main()
;int b[3],i,j,l;
for(i=0;i<=2;i++)
printf("\narray a:\n");
for(i=0;i<=2;i++)
printf("\narray b:\n");
for(i=0;i<3;i++)
printf("%5d",b[i]);
printf("\n");
}例三:
void main()
if(p!=i)
puts(cs[i]);
printf("\n");
c語言二維陣列下標負數是什麼意思
1 在c語言中,二維陣列的下標可以為負數,表示指向前面的元素 2 對於二維陣列 int arr m n 來說,arr i j 的地址是 arr i n j,其值是 arr i n j 3 分析本題 陣列a在初始化時後,其元素按照在記憶體中的排列順序依次為1,2,3,0,4,5,6,0,0,0,0,0...
c語言中a是什麼意思翱和陣列用法嗎
a i,就是bai說將i的值賦予 a,使指標 dua指向的地址中存入i的值。n n 1也很好理解,比如指標zhin指向的地中之前dao存入的 回值為5,則上式的意答思就等同於 n 5 1,指標n指向的地址中將存入數值6。a 的意思就是a指向的地址向後移一位。比如之前a指向陣列b 0 的地址,則之後將...
c語言的t是什麼意思C語言的t是什麼意思
c語言的 t 代表的意思是水平製表符。例如 include include int main int argc,char argv 最終輸出 f g123jk2345e其他轉義字元的含義 int t 是定義一個二級指標變數t。一級 t的值是二級指標 t 的地址。可以通過如下的例項來理解二級指標的含義...