| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1434 人关注过本帖
标题:【求助】关于C指针的问题!高手进下
只看楼主 加入收藏
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
结帖率:80%
收藏
 问题点数:0 回复次数:11 
【求助】关于C指针的问题!高手进下
定义了一个指针,当时我没赋值,而后赋值编译成功了但运行说什么终止了

代码如下:
程序代码:
#include <stdio.h>

void main()
{
int i=10;
int *p;
*p=&i;
printf("%d",*p);


          getch();
} 
编译成功,但运行中断,提示:
Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.

---------------
第二个问题:
指针可否这样赋值:
程序代码:
#include <stdio.h>

void main()
{
int i=10;
int *p;
p=i;
printf("%d",*p);


          getch();
} 
编译成功,运行也中断,提示:
“3.exe 中的 0x00413640 处未处理的异常: 0xC0000005: 读取位置 0x0000000a 时发生访问冲突”(3.EXE是我的项目名)

搜索更多相关主题的帖子: 成功 
2011-05-28 08:50
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
是不是定义了一个指针就必须赋值呢?
我尝试着先让指针指向NULL,然后赋值也出错
int *p=NULL;
*p=&i;
就这样赋值的
2011-05-28 08:51
lixuehu2012
Rank: 1
来 自:甘肃
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-5-25
收藏
得分:0 
指针不能这样赋值的,其赋值形式如下:
int i=10;
int *p;
p=&i;
或者:
int i=10;
int *p=&i;
这样就对了,你回去试试!!


2011-05-28 09:01
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
int *p=&i;
2011-05-28 09:03
ab6326795
Rank: 2
等 级:论坛游民
帖 子:91
专家分:56
注 册:2010-11-8
收藏
得分:0 
回复 3楼 lixuehu2012
谢谢,代码如下:

int i=10;
int *p;
p=&i;

谢谢你们的帮助!
2011-05-28 09:10
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
程序代码:
#include <stdio.h>

void main()
{
int i=10;
int *p;
*p=&i;
printf("%d",*p);


          getch();
}

你说:
编译成功,但运行中断,提示:
Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.
报错原因:编译器已经告诉你了:变量'p'未初始化,你确使用了它。
写程序错误原因:未明白指针初始化方法、未明白指针赋值方法。也就是未明白指针在什么时间用*,在什么时间用&。
解决办法:弄明白下面三行关于指针的代码的意思。
程序代码:
int a=3;

// 第一种,定义时初始化
int* pa_1 = &a;    //也可以初始化为NULL;

//第二种,定义时未初始化(不建议使用),以后点再赋值。
int* pa_2;
pa_2=&a; //这里给指针赋值一个地址,指针前就不要用*了。


看书把红色部分理解了,参照上面,你应该能分析出第二种错在哪里了。留给你做练习吧。

再提点个人看法:程序出错了,还得自己慢慢去看书,思考,调试,自己弄明白和别人和你讲明白,你的收获会不同的。



2011-05-28 09:27
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
第二个代码我这里编译直接出错  一个整形数据怎么能赋值给一个

指向整形的指针呢?

                                         
===========深入<----------------->浅出============
2011-05-28 09:31
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
*p = &i; // 把地址赋给整形变量,呵呵

My life is brilliant
2011-05-28 09:45
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
看 这位老兄 真晕 你怎么把一个数赋给指针呢? 指针接受地址哦
2011-05-28 09:52
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
回复 7楼 laoyang103
编译应该不会错,会产生警告类型
程序代码:
int main(int argc, char *argv[])
{
    int i = (int)&main;
    char *p;
    p = (char*)i;
    return 0;
}
有了这样的代码,你能做点啥

技术问题,请不要以短消息方式提问
2011-05-28 09:55
快速回复:【求助】关于C指针的问题!高手进下
数据加载中...
 
   



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

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