1樓:韋康寧
取得的字元陣列長度與使用的獲取長度的方法有關,在c/c++中常用的獲取字串長度或者字串陣列長度的函式有sizeof()、strlen()。
sizeof()求出的是陣列的總長度,而不是陣列中存放的有意義的資料的個數。比如定義一個int型的陣列:
int a[10] = ;
只初始化了五個元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。換句話說,無法通過 sizeof(a)/sizeof(a[0]) 求出陣列中有多少個有意義的資料。
用 sizeof 可以獲得資料型別或變數在記憶體中所佔的位元組數。同樣,用 sizeof 也可以獲得整個陣列在記憶體中所佔的位元組數。
因為陣列中每個元素的型別都是一樣的,在記憶體中所佔的位元組數都是相同的,所以總的位元組數除以一個元素所佔的位元組數就是陣列的長度。舉例如下:
# include
int main(void);
printf("sizeof(a) = %d\n", sizeof(a));
return 0;
}輸出結果是:
sizeof(a) = 40
陣列 a 是 int 型的,每個元素佔 4 位元組,所以長度為 10 的陣列在記憶體中所佔的位元組數就是 40。
擴充套件資料:
strlen() 與 sizeof() 的區別
1、strlen(char*)
函式求是字串的實際長度,它可以用來獲取動態實際字元陣列的長度,是從開始到遇到第一個「\0」,如果只是定義沒有賦予初始值,這個結果是不確定的,它會從陣列的首地址開始一直找下去,直到遇到「\0」停止查詢。
2、sizeof()
求所佔總空間的位元組數,靜態的,跟初始狀態字元陣列的大小有關係,大小等於初始時字元陣列的大小或者等於初始時字元陣列的大小+1 。
在c++中,如果定義的是字串陣列的話,那麼如果想獲取陣列的長度,只能用sizeof(陣列名),而不能用strlen(str)。
2樓:匿名使用者
public static void main(string args) ;
for (int i = 0; i < strs.length; i++) {
system.out.println("長度:"+strs[i].length()+"\t"+strs[i]);
3樓:瑚一刀
你貼出來**啊。。還有報錯的資訊
matlab陣列長度問題:如何獲得字串陣列中一個元素(元素也是字串)的長度?
4樓:匿名使用者
可以先利用這個語句轉換成char型別:
a(1)=char(a(1);
length(a(1));
就能得到a(1)的長度
也可以直接寫成:
length(char(a(1)));
5樓:
如果你的abc hjee都是字串,那麼你的a不可能賦值成功啊
c語言裡面要定義一個字串陣列,陣列元素個數不確定,每個元素的長度也不確定,求動態定義的方法
6樓:匿名使用者
你可以用動態分配記憶體的方法,
比如你要建立一個字串陣列:
char *str;
str=(char *)malloc(n);
n是變數,可以在確定了變數的值後再用以上**分配記憶體,而str字串可以以一般陣列的用法使用,比如*str="hello";的話
str[1]='l';
最後別忘了釋放記憶體
free(str);
C如何提取陣列中的每字串,C 如何提取陣列中的每一個字串
streamreader sr new streamreader e development hurtcard hurtcard txt 單位配置復.txt encoding.default string line while line sr.readline null 消除空行制 你試試 這個方法...
如何獲得字串最後字元,如何獲得字串最後一個字元
用string類的substring int from,int to 方法去截字串位置為from到to 1位置的字元 substring int index 方法去截字串位置index 1及以後的所有字串,注意字串的字元位置是從0開始的,substring int from int to 方法是前閉...
識別字串中的每字元c,識別字串中的每一個字元c
cstring 是 mfc 的 class.或取長度應當是 用成員函式 brand.getlength 取 字串中的每個字元 用 brand.getat 函式。mfc 輸出顯示 較煩。可以用 messagebox 不能用簡單辦法寫出完整可執行的程式。除非為了應付老師的題目,如果自己寫應用程式,不必舍...