当前位置:首页 » 编程语言 » c语言数组的右上方区域
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组的右上方区域

发布时间: 2023-01-06 03:22:28

⑴ 关于c语言的数组

你提这个问题涉及几个方面
1.静态存储
2.静态数组(static数组),全局数组,动态数组,局部数组
3.给数组赋初值

下面分别解答
1.静态存储区/BSS段/栈
一个程序一般分为3段:text段,data段,bss段
text段:就是放程序代码的,编译时确定,只读,
data段:存放在编译阶段(而非运行时)就能确定的数据,可读可写
就是通常所说的静态存储区,赋了初值的全局变量和静态变量存放在这个区域,常量也存放在这个区域
bss段:定义而没有赋初值的全局变量和静态变量,放在这个区域
2.数组定义
函数外不加static定义的数组为全局数组
用static定义静态数组(函数内或函数外)
用malloc定义动态数组
函数内不加static关键字的数组,为局部数组
3.数组赋初值
对全局数组,定义并赋初值,则在data段,定义未赋初值,在bss段
静态数组也一样,无论静态数组是在函数内还是函数外,定义并赋初值,则在data段,定义未赋初值,在bss段
动态数组,全是从堆上分配的
局部数组,从函数的栈上分配的,显然存储在栈上,函数结束就释放

重点区分最具有迷惑性的以下两种定义
int func1()
{
char s[200]="hello world!";
}

int func2()
{
static char s[200]="hello world!";
}

func1中,"hello world!"为常量数组,存放在data段
数组s从func1的栈上分配,然后常量数组的值复制到数组s中

func2中,"hello world!"为初值,数组s编译时就确定在data段,
初值为"hello world!"

⑵ C语言数组程序

这个程序,是要先输入一个<10的正整数n,然后再输入n*n个整数到一个二维数组中。

最后,计算并输出二维矩阵的主对角线及其右上方所有元素的累乘积(很容易“溢出”的哦!)。