帮帮忙,电脑小白,不会

数组中的元素是常量还是变量。。。。。。。。。。。。。。。。。

这种赋值一般都是按照常量来考虑的,单从语法上来说确实是变量,只不过编译阶段帮你分配了存储空间,后面你可以重新赋值或是修改里面的值(但要注意内存的分配和释放)


 

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

void foo(const char * file, int line, const char * s, void * p)
{
     printf("%s:%d %p %s\n",file,line,p,s);
}
#define FOO(x) foo(__FILE__,__LINE__,#x,((void*)(x)))
int main(int argc, char *argv[])
{
    long long junk[3][4];
    FOO(junk);
    FOO(&junk);
    FOO(junk[0]);
    FOO(&junk[0]);
    FOO(&junk[0][0]);
    return 0;
}

程序输出结果

gcc -O3 junk.c && ./a.out
junk.c:13 0x7fff846d9040 junk
junk.c:14 0x7fff846d9040 &junk
junk.c:14 0x7fff846d9040 junk[0]
junk.c:15 0x7fff846d9040 &junk[0]
junk.c:16 0x7fff846d9040 &junk[0][0]

可以看到,这五个东西都是同样的值。
在汇编语言看来,这五个东西没有区别。
C 语言中数组的概念是一个十分丑陋的设计。我宁愿把它看作是语法糖。
就是说,用这种语法,可以方便的描述一连串内存的值,也方便计算元素地址的偏移量。

但无论如何,他就是一块连续的内存。

两者都可以,看你自己需要

常量