int main(){
int i,j,temp;
int a[]={3,2,4,7,1};
for(i=1;i<5;i++){
temp=a[i];
for(j=i-1;j>=0;j--){
if(a[j]>temp)
a[j+1]=a[j];
else
break;
}
a[j+1]=temp;//if I replace this by a[i] I am getting wrong output.
}
for(i=0;i<5;i++)
printf("\n\n%d",a[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在内循环中,我没有改变变量i的值.然后,如果我更换a[j+1]=a[i],我输出错误.我错过了一些重要的概念吗?
# ! /bin/sh
function pqr()
{
# This prints value to 10 even though variable is local inside a
echo "Displaying value of var a $a"
}
function abc()
{
local a=10
# call function pqr and don't pass value of a
pqr
}
Run Code Online (Sandbox Code Playgroud)
即使我没有将变量a传递给pqr()函数,我在pqr()中得到一个= 10.我的问题是a的范围和可见性在pqr()内部与abc()相同吗?这是因为我们从函数abc()调用pqr()吗?我期待在pqr中创建新变量并显示空白值.(因为这是变量范围和可见性在现代语言中如何工作所以我很好奇它是如何在bash中工作的)我理解在上面的例子中如果我重新声明一个内部pqr()那么新的变量将被创建,因此显示空白值.提前致谢!!!