c 语言指针问题

[复制链接]
查看11 | 回复1 | 2008-5-29 20:14:42 | 显示全部楼层 |阅读模式
下面是我们c语言教科书上的一小段代码:
#include
#define N=2
#define M=3
int main(void)
{
static int a[N][M]={1,2,3,4,5,6};
int *arr[N]={a[0],a[1]};
int i,j,**p=arr;
for(i=0;i<M;i++)
{

printf("%d",*(*(p+i));

printf("\n");
}
return 0;
}
我是初学者,有两个地方看不懂----1:在定义数组a时前面加的static是什么东西?有什么作用?
2:int *arr[N]={a[0],a[1]};这条语句的指针可以是数组吗?arr又代表版纳个数组的地址?
这两个问题想了很久都想不通,望高手解答!!!!
arr又代表哪个数组的地址?对于第一个问题能在详细点吗?我们一般定义数组时并没有在前面加个static啊!

回复

使用道具 举报

千问 | 2008-5-29 20:14:42 | 显示全部楼层
1.static是定义静态变量,这些变量初始化时分配内存。这篇文章对static的解释比较到位:http://blog.chinaunix.net/u1/54285/showart.php?id=4250762.数组arr的元素都是指针,arr[0]指向数组a[0],arr[1]指向数组a[1]。但是arr本身是数组,地址是固定的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行