| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:求助,这个指针定义可以编译但不能运行
取消只看楼主 加入收藏
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
求助,这个指针定义可以编译但不能运行
各位大虾好!

我是刚学的C,目前在看的书是C PRIMER,这两天刚看到数组与指针那一章。
但现在有一个最简单的步骤过不去。
程序代码:
int main(void)
{
    int * par;

    *par=5;
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
在VC++中可以编译,但不能运行,提示如图中所示的错误。

我明明已经定义了指针,为什么还是提示未定义?
2011-12-09 14:45
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
收藏
得分:0 
PS: 我将指针定义放在函数形式参量上,比如编译那个两个数字互换的程序,是可以正确运行的。
为什么这个不行?
2011-12-09 14:46
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
收藏
得分:0 
我不是很懂你的话,但下面的程序是能正确运行的
程序代码:
void dayin(int * a,int n);

int main(void)
{
    int ar[3]={1,2,3};
   
    dayin(ar,3);
    return 0;
}

void dayin(int *a,int n)
{
    int i;

    for(i=0;i<n;i++)
        printf("%d ",*(a+i));
}

不过听你这样一说,我好像有点体会。
我之前有学过一段时间的Pascal,定义一个指针后要运行new(pointer)以产生一个动态变量。但是无论是否产生这个动态变量,pointer这个指针变量本身在定义的时候就已经存在了。
难道C中不一样,而且为什么在函数中定义的又可以运行(好像函数调用时已经赋了实参这个实体过去了)

如果是这个原因,主函数中又如何赋实体?
2011-12-09 15:01
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
收藏
得分:0 
程序代码:
int main(void)
{
    int *par;
   
    printf("%p",par);
    return 0;
}
我有点理解TonyDeng兄的意思了,没有指针所指向的实体不能赋值。

即使指针变量本身已经定义,但以上的程序还是打印不出来。
因为%p打印的的是指针变量上所存储的地址值,而不是指针变量本身的地址值。
是不是这个意思?
2011-12-09 15:11
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
收藏
得分:0 
一语点醒

感谢TonyDeng兄,已结帖,因小弟初来咋到没有什么分数,只能是意思一下了。
2011-12-09 15:15
快速回复:求助,这个指针定义可以编译但不能运行
数据加载中...
 
   



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

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