| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:Static 这个特殊的指针?
只看楼主 加入收藏
Fjcyz
Rank: 2
等 级:论坛游民
威 望:1
帖 子:175
专家分:25
注 册:2006-2-6
收藏
 问题点数:0 回复次数:19 
Static 这个特殊的指针?
#include "stdio.h"
main()
{
static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
printf ("%d\t%d\t%d\t%d\t%d\t\n",m,*m,m[0],&m[0],&m[0][0]);
printf ("%d\t%d\t%d\t%d\t%d\t\n",m+1,*(m+1),m[1],&m[1],&m[1][0]);
printf ("%d\t%d\t%d\t%d\t%d\t\n",m+2,*(m+2),m[2],&m[2],&m[2][0]);
printf ("%d\t%d\t\n",m[1]+1,*(m+1)+1);
printf ("%d\t%d\t\n",*(m[1]+1),*(*(m+1)+1));
}


问题是 : 1 . static 是何东东
2 . 未指定指针. 为何输出还可以用 * (m+1) , 这种格式?
搜索更多相关主题的帖子: 指针 Static static int 
2006-02-14 12:51
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
1、scatic是将变量定义为静态变量
2、因为数组是用地址存储的, 要读其中的值必需要找到它的地址,*m=a[0][0] 等价
 

2006-02-14 13:04
Fjcyz
Rank: 2
等 级:论坛游民
威 望:1
帖 子:175
专家分:25
注 册:2006-2-6
收藏
得分:0 
静态变量? 是一个什么概念? 我的书上没有.

int m=[4];
*m 这样就是读取m的地址了?

最好的域名、虚拟主机、VPS  www.
2006-02-14 13:18
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

静态变量:无论变量是否调用都占存储单元,不释放变量的空间.而一般我们通常用的是动态变量(int a=3;)
静态变量是一个固定不变的值,如果我们定义成
static int a=3; 那么当这个程序执行完之后a这个变量还是在我们的存储单元存在。一般情况下不提倡使用静态变量,但是可以利用静态变量来改变值。
如:
int add(int x,int y)
{static int a=3;
a+=x+y;
return(a);
}
main()
{int a,b,c1,c2;
scanf("%d%d",&a,&b);
c1=add(a,b);
c2=add(a,b);
printf("c1=%d,c2=%d",c1,c2);
getch();
}
这段程序执行完之后c1,c2的值是不一样的,这段程序就能说明scatic的一个功能。我也不知道你看的谁的书,我看的谭浩强的书.
2、第二个问题你再好好看看书,我也是这几天才看到指针的,不好解释。


2006-02-14 13:33
超级新手
Rank: 2
等 级:论坛游民
帖 子:185
专家分:59
注 册:2006-2-9
收藏
得分:0 

m 是数组名字,他也可以表示数组首地址

书上这个都不说的话 可以考虑换一本书 再看看


快快来我的群:13485998
学学C,玩玩算法,搞搞加密,比比谁更菜?
ARM恨死你。
2006-02-14 13:37
Fjcyz
Rank: 2
等 级:论坛游民
威 望:1
帖 子:175
专家分:25
注 册:2006-2-6
收藏
得分:0 
谢谢... 大概意思都明白了.

m是数组名,首地址,书上有讲.. 但是没讲 m可以直接用 *m 调用出来.

哪 *m = m[0][0] 对吧.

最好的域名、虚拟主机、VPS  www.
2006-02-14 13:43
超级新手
Rank: 2
等 级:论坛游民
帖 子:185
专家分:59
注 册:2006-2-9
收藏
得分:0 

首地址里面放的是什么


快快来我的群:13485998
学学C,玩玩算法,搞搞加密,比比谁更菜?
ARM恨死你。
2006-02-14 13:45
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用Fjcyz在2006-2-14 13:43:00的发言:
谢谢... 大概意思都明白了.

m是数组名,首地址,书上有讲.. 但是没讲 m可以直接用 *m 调用出来.

哪 *m = m[0][0] 对吧.  /*错,*m是指向m[0][0]单元的值,*表示指向,m才是存放m[0][0]的指针变量。*/


2006-02-14 13:54
Fjcyz
Rank: 2
等 级:论坛游民
威 望:1
帖 子:175
专家分:25
注 册:2006-2-6
收藏
得分:0 

*m = m[0][0]

/*错,*m是指向m[0][0]单元的值,*表示指向,m才是存放m[0][0]的指针变量

m[0][0] 不就是值么?

m=&m[0][0] 应该是这样的吧?

最好的域名、虚拟主机、VPS  www.
2006-02-14 14:02
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用Fjcyz在2006-2-14 14:02:00的发言:

*m = m[0][0]

/*错,*m是指向m[0][0]单元的值,*表示指向,m才是存放m[0][0]的指针变量

m[0][0] 不就是值么?

m=&m[0][0] 应该是这样的吧? /*这样是对的*/

2006-02-14 14:08
快速回复:Static 这个特殊的指针?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028733 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved