瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 【求助】C语言指针疑问
过客2007 - 2007-12-24 11:21:00
#include "stdio.h"
swap(int *pt1,int *pt2)

{int temp;
   
    temp=pt1;
    *pt1=*pt2;
    *pt2=temp;
/*为什么不可以写成:
int *temp;
   
    *temp=*pt1;
    *pt1=*pt2;
    *pt2=*temp;

改这样之后,运行,会提示出错。

假如说指针在定义以前不能被使用,如果说在定义指针时,定义为:*temp=NULL,再使用可以?

*/
   
    }
exchange(int *q1,int *q2,int *q3)

{
    if(*q1<*q2)swap(q1,q2);
    if(*q1<*q3)swap(q1,q3);
    if(*q2<*q3)swap(q2,q3);   
   
   
    }

main()
{
    int a,b,c,*p1,*p2,*p3;
    scanf("%d,%d,%d",&a,&b,&c);
    p1=&a,p2=&b,p3=&c;
    exchange(p1,p2,p3);
    printf("\n%d,%d,%d\n",a,b,c);
   
}

[用户系统信息]Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)
person997 - 2007-12-25 13:36:00
你还是没明白什么是指针!



int *p = NULL;
int iArray[100] = {0};

.....
p = &iArray[20];
*p = 10;

_tprintf(_T("out : %d"), iArray[20]);

.....

=================================
out : 10
andylin02 - 2008-1-3 17:30:00
/*为什么不可以写成:
int *temp;
这里temp 没有指向一个int变量。所以,*temp没有存储空间.因此,这个时候对*temp 赋值是很危险的。
andylin02 - 2008-1-3 17:31:00
引用:
【person997的贴子】你还是没明白什么是指针!
你还在捣二手电脑吗?
过客2007 - 2008-1-7 23:27:00
引用:
【andylin02的贴子】/*为什么不可以写成:
int *temp;
这里temp 没有指向一个int变量。所以,*temp没有存储空间.因此,这个时候对*temp 赋值是很危险的。
………………



明白一点点了..

最近比较忙,没继续研究C了...

让你们久等了.
大屁虫 - 2008-1-12 11:03:00
2楼正解.
好比是随便取一个名字Rack,但是要你把钱交给Rack,叫他再把钱存到银行,你愿意么?
咨询三 - 2008-1-14 10:24:00
检测到

木马程序
TROJAN-PSW.WIN32.ONLINEGAMES.NJY

文件:
C:\DOCUME-1\ADMINI-1\LOCALS-1\TEMP\TMPDC.TMP

操作

文件 包含木马程序 'TROJAN-PSW.WIN32.ONLINEGAMES.NJY ' 但不能清除


咨询三 - 2008-1-14 10:25:00
请大侠给予解决,谢谢/急!!!
过客2007 - 2008-1-14 14:29:00
引用:
【咨询三的贴子】检测到


………………


一般重启电脑就可以删除了\

一般出现这情况是中了下载者病毒,需要扫描卡卡日志,再帖到日志求助区
尚天的人 - 2008-2-26 15:31:00
该用户帖子内容已被屏蔽
天下奇才 - 2008-2-27 14:43:00
temp作为一个指针,并为指向一明确的存储空间。直接引用它是相当危险的(如果编译器处理不好的话,可能会出现其他问题)。

其实交换两个数,有另外的方法,我觉得比较方便,顺便介绍给你

int f(int *a,int *b)
{
*a=(*a)^(*b);
*b=(*a)^(*b);
*a=(*a)^(*b);
}

这样不需要额外的存储空间,而且速度比较快。
过客2007 - 2008-2-28 10:22:00
引用:
【天下奇才的贴子】temp作为一个指针,并为指向一明确的存储空间。直接引用它是相当危险的(如果编译器处理不好的话,可能会出现其他问题)。

其实交换两个数,有另外的方法,我觉得比较方便,顺便介绍给你

int f(int *a,int *b)
{
*a=(*a)^(*b);
*b=(*a)^(*b);
*a=(*a)^(*b);
}

这样不需要额外的存储空间,而且速度比较快。
………………



谢谢了,虽然我现在还看不懂,但是还是先谢谢了.
1