導航:首頁 > 操作系統 > linux數組長度

linux數組長度

發布時間:2022-06-10 09:16:56

linux shell 數組array基礎和$a的區別

Linux Bash中,數組變數的賦值有兩種方法:
(1) name = (value1 ... valuen) // 此時下標從0開始;
(2) name[index] = value
下面以一個簡單的腳本來說明,腳本內容如下:
#!/bin/bash
#定義數組
A=(a b c def)
#把數組按字元串顯示輸出
echo ${A[@]}
#屏幕顯示:a b c def
#數組的長度表示${#A[*]}
len=${#A[*]}
echo ${#A[*]}
#屏幕顯示:4
#改變數組元素的值
A[3]='vivian'
echo ${A[*]}
#屏幕顯示:a b c vivian
#循環輸出數組元素
i=0
while [ $i -lt $len ]
do
echo ${A[$i]}
let i++
done
#屏幕輸出:
# a
# b
# c
# vivian

#循環輸出數組元素的另一種寫法,注意,在條件中,用#a[@]取其個數。
for ((i=0;i<${#A[@]};i=$i+1))
do
echo ${A[$i]}
done
#循環輸出數組元素的另一種寫法,注意,在條件中,引用變數一定要用雙引號 ,否則報錯。
for (( j=0; j<"$len"; j=j+1 )) //len表示數組長度值
do
echo ${A[$j]}
done
#循環輸出數組元素的另一種寫法,注意,${A[*]}不能寫成$A ,$A默認是第一個元素。 如果A="a b c ded",就可以寫$A,
for value in ${A[*]}
do
echo $value
done
ps:
若a=(1 2 3 4)表示所有元素,則其只能用${a[*]}或者${a[@]}來表示。在a=(1 2 3 4)中,$a只是表示第一個元素1。
若a="1 2 3 4"表示所有元素,則其可以用${a[*]}或者${a[@]}或者$a來表示。
假如a="1 2 3 4",則array=($a)就相當於a=(1 2 3 4),不信你可以試試echo ${array[@]}。
上面的例子還可以改寫成以下內容:
for value in $A
do
echo $value
done

Ⅱ Linux求數組長度為10000的浮點數(精確小數點右4位)計算值

既然題主沒有說要求用什麼語言,那我就用c++11實現了。

#include<iostream>

#include<random>

#include<thread>

#include<chrono>

#include<algorithm>

#include<iomanip>


usingnamespacestd;


constintsize=10000;

floattable[size];


intmain(){

random_deviceengine;

uniform_real_distribution<float>dist(0,1);

floatsum;


for(auto&i:table){

i=dist(engine);

}


autot_start=chrono::system_clock::now();

sum=accumulate(table,table+size,0.0);

autot_end=chrono::system_clock::now();

autoration=std::chrono::ration_cast<std::chrono::microseconds>(t_end-t_start).count();

cout<<"sumofthemainthread:"<<fixed<<setprecision(4)<<sum<<endl;

cout<<"timeelapsed:"<<ration<<"microseconds"<<endl;


floatsum_child[4];

autofun=[&](intindex){

sum_child[index]=accumulate(table+index*size/4,table+(index+1)*size/4,0.0);

};


t_start=chrono::system_clock::now();

threadthrd_table[4]={

thread(fun,0),thread(fun,1),thread(fun,2),thread(fun,3)

};

for(auto&thrd:thrd_table){

thrd.join();

}

sum=0;

sum=accumulate(sum_child,sum_child+4,0.0);

t_end=chrono::system_clock::now();

ration=std::chrono::ration_cast<std::chrono::microseconds>(t_end-t_start).count();

cout<<"sumofchildthreads:"<<fixed<<setprecision(4)<<sum<<endl;

cout<<"timeelapsed:"<<ration<<"microseconds"<<endl;


return0;

}


編譯

g++-std=c++11test.cc-lpthread-otest

運行:

./test

結果:

sumofthemainthread:4976.8721

timeelapsed:0ms

sumofchildthreads:4976.8721

timeelapsed:0ms


由於隨機性每次加和的數值不同,但是精確到毫秒時,時間測出來妥妥的都是零。就是數據量太小,實際運行時間在微秒量級,當然看不出來。

精度改為微秒以後:

sumofthemainthread:4957.9878

timeelapsed:113microseconds

sumofchildthreads:4957.9878

timeelapsed:560microseconds

多線程反而比單線程慢,因為啟動線程本身也需要時間。

數據量再增大1000倍:

sumofthemainthread:4999892.0000

timeelapsed:25313microseconds

sumofchildthreads:4999892.0000

timeelapsed:8986microseconds

這回看著正常多了吧

Ⅲ C語言strlen求數組長度。為什麼會是這樣,linux下GCC編譯器。

你換台機器就不是58的值了!所謂的固定,是你機器內存情況剛好處在那種狀態下。

你沒有,strlen()就會自動去找位置,這個0位置在什麼位置是不確定的。

strlen(s)函數,從s首地址開始一直統計到位置,其中有幾個位元組就輸出長度為幾!

#include<stdio.h>
#include<string.h>
voidmain()
{
inti=0;//這里加上這個,你再去試,結果一定會有變化的,原理,自己思考一下吧
charp[]={1,2,3,4,5,66,7,};
charq[]={1,2,3,4};
charr[]={1,2,3,4};
printf("length:%d ",strlen(p));
printf("length2:%d ",strlen(q));
printf("length3:%d ",strlen(r));
}

Ⅳ linux中,c++ 結構體定義可變長數組成員時,為什麼可變數組的長度一定要放在臨近位置 具體看下面例子。

單從兩個結構上看都沒啥問題,之所以你說的出錯是因為,客戶端 和 服務端,的結構不一致導致的。 你的數據過去,服務端可能會先把數據扔到內存中,然後直接memcpy方式賦值給結構體對象。這就會導致a 和length是反的。

Ⅳ linux 命令 echo ${#array_var[*]} 中#的作用是什麼

返回數組的長度比如$array_var="abcd"${#array_var}就返回4。

linux命令是對Linux系統進行管理的命令。對於Linux系統來說,無論是中央處理器、內存、磁碟驅動器、鍵盤、滑鼠,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。

如果你的英文足夠好,那完全可以不靠任何人就精通linux,只要你會用man。Man實際上就是查看指令用法的help,學習任何一種UNIX類的操作系統最重要的就是學會使用man這個輔助命令。

Ⅵ shell 怎麼獲取數組長度

arr=(12345)
len=${#arr[@]}
echo$len

關於shell數組的更多操作,參見我的空間文章《shell數組與awk數組》

http://hi..com/eamontse/item/cb93d2457a1d91e51281daef

Ⅶ linux下java實現ftp下載,ftpClient.listFiles();返回的數組長度一直是0

如果你加了ftpClient.enterRemotePassiveMode();還是不行,那麼就可能是你commons-net 的jia包版本太低,你可以試著引入 commons-net-3.3.jar以及以上版本的jar應該就可以了。

Ⅷ linux c 數組大小

自從C99標准開始,C語言支持變長數組,數組大小可以是變數

Ⅸ linux腳本,在一個循環中賦值一個數組

數組的賦值操作有問題,改成下面這樣:
for ubootfile in $uboot_list
do
FILE=`find . -name $ubootfile -print -quit`
if [ -n "$FILE" ]; then
a=(${a[@]} $FILE)
else
b=(${b[@]} $FILE)
fi
done
echo "found files:"
echo ${a[@]}
echo "missing files:"
echo ${b[@]}

下面是數組操作的講解,請參考:
數組作為一種特殊的數據結構在任何一種編程語言中都有它的一席之地,當然bashshell也不例外。本文就shell數組來做一個小的總結。
在這里只討論一維數組的情況,關於多維數組(事實上,你得用一維數組的方法來模擬),不涉及。這里包括數組的復制,計算,刪除,替換。

數組的聲明:
1)array[key]=value # array[0]=one,array[1]=two
2)declare -a array # array被當作數組名
3)array=(value1 value2 value3 ... )
4)array=([1]=one [2]=two [3]=three ... )
5)array="one two three" # echo ${array[0|@|*]},把array變數當作數組來處理,但數組元素只有字元串本身
數組的訪問:
1)${array[key]} # ${array[1]}
數組的刪除
1)unsetarray[1] # 刪除數組中第一個元素
2)unset array # 刪除整個數組
計算數組的長度:
1)${#array}
2)${#array[0]}#同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的區別
數組的提取
從尾部開始提取:
array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一個元素後所有元素,那麼${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three

子串刪除
[root@localhostdev]# echo ${array[@]:0}
one two three four
[root@localhostdev]# echo ${array[@]#t*e} # 左邊開始最短的匹配:"t*e",這將匹配到"thre"
one two e four
[root@localhostdev]# echo ${array[@]##t*e} # 左邊開始最長的匹配,這將匹配到"three"
[root@localhostdev]# array=( [0]=one [1]=two [2]=three [3]=four )
[root@localhostdev]# echo ${array[@] %o} # 從字元串的結尾開始最短的匹配
one tw three four
[root@localhostdev]# echo ${array[@] %%o} # 從字元串的結尾開始最長的匹配
one tw three four
子串替換
[root@localhostdev]# array=( [0]=one [1]=two [2]=three [3]=four )
第一個匹配到的,會被刪除
[root@localhostdev]# echo ${array[@] /o/m}
mne twm three fmur

所有匹配到的,都會被刪除
[root@localhostdev]# echo ${array[@] //o/m}
mne twm three fmur
沒有指定替換子串,則刪除匹配到的子符
[root@localhostdev]# echo ${array[@] //o/}
ne tw three fur
替換字元串前端子串
[root@localhostdev]# echo ${array[@] /#o/k}
kne two three four
替換字元串後端子串
[root@localhostdev]# echo ${array[@] /%o/k}
one twk three four

Ⅹ Linux:難道這個結果就是查看到的數組長度

bash是linux的一種命令形式,就像cmd,後面的4是錯誤代碼,command not found是錯誤描述,意思是沒有找到命令,這個命令不存在,你寫的東西有問題,或者是環境變數設置有問題。

閱讀全文

與linux數組長度相關的資料

熱點內容
手機程序加密有什麼作用 瀏覽:178
求黑馬程序員python教程 瀏覽:528
androidmvvm優缺點 瀏覽:894
unix下編譯庫文件 瀏覽:633
程序員的u盤 瀏覽:237
android根據經緯度獲取城市 瀏覽:564
python使用解釋器還是編譯器 瀏覽:358
以下關於有加密演算法及密鑰描述 瀏覽:219
linuxgethostname 瀏覽:416
程序員多數有對象 瀏覽:131
單片機延時程序計算 瀏覽:444
編譯原理語法翻譯 瀏覽:504
pr編譯出錯渲染存在偏移 瀏覽:262
如何製作自家的app 瀏覽:199
推薦一個解壓軟體rar解壓幫手 瀏覽:210
wd文檔加密器 瀏覽:748
伺服器上傳壓縮包一般是什麼格式 瀏覽:333
發送加密文件密碼幾位數 瀏覽:160
樹洞app怎麼樣 瀏覽:175
vivo編譯時間可以改么 瀏覽:150