c語言數組的長度
1. c語言中計算數組長度的方法是什麼
用 sizeof 可以獲得數據類型或變數在內存中所佔的位元組數。同樣,用 sizeof 也可以獲得整個數組在內存中所佔的位元組數。因為數組中每個元素的類型都是一樣的,在內存中所佔的位元組數都是相同的,所以總的位元組數除以一個元素所佔的位元組數就是數組的長度。
比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補0)位移。例如,將11100011右移3比特,算術右移後成為11111100,邏輯右移則為00011100。
運算符的優先順序從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。
C語言特點:
其一,廣泛性。C語言的運算范圍的大小直接決定了其優劣性。C語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。
其二,簡潔性。9類控制語句和32個關鍵字是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時還能夠支持高級編程,避免了語言切換的繁瑣。
2. C語言 怎樣求數組中元素個數(長度)
如果這樣定義,每一行還是20個數,後面的自動補為0了,所以根據這個數組不能求得每一行的元素個數。
樓主可以在這個數組每一行再添加一個特殊的數字作為標志位。
3. C語言字元數組的長度
這是很自然的事啊,你想啊,i = sizeof(ch1),至於你後面在除一個sizeof(char)根本就沒有必要,因為char本來就是用一個位元組存儲的,等於說你在除1,i=8而不是7是因為雙引號中的字元串被自動在末尾加了一個'\0'。求字元串長度函數strlen求的是從字元串其實位置開始一直到'\0'之間字元串的個數,你調用strcat(ch1,ch2)後,在內存中ch1就成了Welcometo C!\0,其中Welcometo C!一個是12個字元,算上空格,所以j就等於12
4. C語言,結構體數組的長度
C語言不支持動態分配內存,你需要自己分配,大概這樣
#include<stdio.h>
#include<stdlib.h>
typdef struct Node
{
int value;
int next;
}Node;
int main()
{
int a;
scanf("%d",&a);
Node *p=malloc(a*sizeof(Node));
.......
}
這樣p就相當於Node數組的第一個元素的指針,也可以當作數組名使用了。
5. c語言獲得數組的長度
1、c語言中,定義數組後可以用sizeof命令獲得數組的長度(可容納元素個數)。
例如:
double a[] = {1,2,3,4};
int length;
length=sizeof(a)/sizeof(a[0]); //數組占內存總空間,除以單個元素占內存空間大小
printf(「length of a=%d」, length ); //輸出length of a=4
2、但是,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。
例如:
int getLength(int a[]){
int length;
length=sizeof(a)/sizeof(a[0]); //這樣是錯誤的,得到的結果永遠是1
return length;
}
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以,sizoef(a)的結果是指針變數a占內存的大小,一般在32位機上是4個位元組。a[0]是int類型,sizeof(a[0])也是4個位元組,所以,結果永遠是1。
3、因此,獲得數組長度,只能在數組定義所在的代碼區中,採用以上方法,才可以達到效果
6. C語言中關於字元數組的長度問題
哎。strlen()是在string.h裡面的,getch()是在conio.h裡面的,不過,我用的是CFree,至於其它的編譯器,我就不知道了。
至於你的問題,當你仔細看看他們的結果,你就會有結論了。
很明顯,strlen(q)的值是一樣的,不同的是p的字元長度
而它們的區別,就在於,它們一個有數組的長度,另一個沒有。
數組q,它的長度是10,所以一開始就會分配10個大小為sizeof(char)的空間,然後,就把a,b,c分別放進從分配的第一個,第二個,第三個空間裡面,然後,剩下的變為0()也就是'\0'。
所以用strlen(q)的時候,就是3
而沒有長度的p,它預設了長度,所以系統就會按你給的元素個數分配,這里p有3個元素,所以就分配3個大小為sizeof(char)的空間,當你用strlen(p)的時候,因為strlen()是以字元串終結符'\0'來判定字元串長度的,所以呢,strlen(p)是一個不確定值。
如果你還沒能理解為什麼是一個不確定值,那就繼續看下去。
在C中,是不會檢測是否越界的,你可以順著數組一直訪問下去,比如你定義一個 int a[10]
你可以訪問a[12],a[13](當然也可以訪問a[-1],a[-100]),只是這些值是不確定的。它訪問的方式,是從數組的起始地址開始,按照數組下標值,進行相對位移(它們所跳過的長度是數組類型的長度,比如上面,是跳過sizeof(int)的長度)。
而strlen()就是從它首地址開始,一個個開始檢測,是否達到'\0『,然後返回長度值。
當你調用strlen()的時候,如果沒有終止符'\0』,它就會越界檢查,直到找到'\0『。
就像 char a[3]={'a','b','c'},它也是一個不確定值。
明白了沒,不懂繼續追問。
寫這么多,真的好累。。。
7. 在c語言中..怎麼判斷一個數組 的長度
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
8. C語言數組長度的問題
你說得對,a末尾有"\0",b沒有。
題目出得不清楚,「數組長度」指數組有幾個數組元素,還是占據內存的長度,還是字元串長度。
數組元素個數,a
4個,
b
3個
占據內存的長度,
sizeof(a)
得4
,sizeof(b)
得
3
字元串長度,strlen(a)得3
,strlen(b)得
3
題目想問的是「字元串長度」,說成「數組長度」。
9. c語言怎麼獲取數組的長度,
c語言中,定義數組後可以用sizeof命令獲得數組的長度(可容納元素個數)
如:
{
intdata[4];
intlength;
length=sizeof(data)/sizeof(data[0]);//數組占內存總空間,除以單個元素占內存空間大小
printf("lengthofdata[4]=%d",length);//輸出lengthofdata[4]=4
}
但,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。如:
intgetLength(int[]a){
intlength;
length=sizeof(a)/sizeof(a[0]);//這樣是錯誤的,得到的結果永遠是1
returnlength;
}
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以,sizoef(a)的結果是指針變數a占內存的大小,一般在32位機上是4個位元組。a[0]是int類型,sizeof(a[0])也是4個位元組,所以,結果永遠是1。
因此,獲得數組長度,只能在數組定義所在的代碼區中,採用以上方法,才可以達到效果。