【求助帖】关于指针

_小小咔啦咪 2016-04-11 09:28:00

在主函数中调用swap函数,其中的两个参数分别是p1和p2,但是我在声明和定义函数swap中,其参数却是是*p1和*p2。我想问一下这对程序本身没有影响么?有什么区别?
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
_小小咔啦咪 2016-05-14
  • 打赏
  • 举报
回复
引用 5 楼 赵4老师的回复:
仅供参考:
#include <stdio.h>
#define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0)
char   *p1="1" ,*p2="2" ;
char    c1=1   , c2=2   ;
short   s1=1   , s2=2   ;
int     i1=1   , i2=2   ;
__int64 I1=1i64, I2=2i64;
float   f1=1.0f, f2=2.0f;
double  d1=1.0 , d2=2.0 ;
void main() {
    SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);
    SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);
    SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);
    SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);
    SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);
    SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);
    SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);

    SWAP(c1,c1);
    printf("%d\n",c1);
}
//char *         2,       1
//char           2,       1
//short          2,       1
//int            2,       1
//__int64     2,    1
//float          2,       1
//double        2,      1
//2
好的,谢谢大神的帮助!
赵4老师 2016-04-12
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0)
char   *p1="1" ,*p2="2" ;
char    c1=1   , c2=2   ;
short   s1=1   , s2=2   ;
int     i1=1   , i2=2   ;
__int64 I1=1i64, I2=2i64;
float   f1=1.0f, f2=2.0f;
double  d1=1.0 , d2=2.0 ;
void main() {
    SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);
    SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);
    SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);
    SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);
    SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);
    SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);
    SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);

    SWAP(c1,c1);
    printf("%d\n",c1);
}
//char *         2,       1
//char           2,       1
//short          2,       1
//int            2,       1
//__int64     2,    1
//float          2,       1
//double        2,      1
//2
_小小咔啦咪 2016-04-11
  • 打赏
  • 举报
回复
引用 3 楼 qq423399099 的回复:
[quote=引用 2 楼 hdj_cz_forever 的回复:] [quote=引用 1 楼 qq423399099 的回复:] 这个当然没有影响。。。 你在main函数中的p1和p2类型是int * 而你定义的swap函数类型也是int * 啊 (楼主以为*离p1近就和p1结合了啊。。。。) int swap(int *p1, int *p2)和int swap(int* p1, int* p2)一样的(这样楼主是不是就懂了呢)
受教了,谢谢哈~问一个题外话,我现在还是一名学生,语言方面是从C++开始学的,之前还有学过一些C,但是因为我怕贪多嚼不烂,所以暂时放弃C,我想问,我以后想找一份好点的工作,在学完C++之后应该学什么语言?[/quote] 这个问题有点大了,不过主要看楼主想往哪方面发展了,对哪方面感兴趣 如果是想毕业以后能比较轻松的找到工作,楼主不妨去逛逛招聘网站,比如拉勾(我不是做广告啊,哈哈) 看看他们对于招聘人员的要求,需要哪方面的技术[/quote] 好的,谢谢~
小灸舞 版主 2016-04-11
  • 打赏
  • 举报
回复
引用 2 楼 hdj_cz_forever 的回复:
[quote=引用 1 楼 qq423399099 的回复:] 这个当然没有影响。。。 你在main函数中的p1和p2类型是int * 而你定义的swap函数类型也是int * 啊 (楼主以为*离p1近就和p1结合了啊。。。。) int swap(int *p1, int *p2)和int swap(int* p1, int* p2)一样的(这样楼主是不是就懂了呢)
受教了,谢谢哈~问一个题外话,我现在还是一名学生,语言方面是从C++开始学的,之前还有学过一些C,但是因为我怕贪多嚼不烂,所以暂时放弃C,我想问,我以后想找一份好点的工作,在学完C++之后应该学什么语言?[/quote] 这个问题有点大了,不过主要看楼主想往哪方面发展了,对哪方面感兴趣 如果是想毕业以后能比较轻松的找到工作,楼主不妨去逛逛招聘网站,比如拉勾(我不是做广告啊,哈哈) 看看他们对于招聘人员的要求,需要哪方面的技术
_小小咔啦咪 2016-04-11
  • 打赏
  • 举报
回复
引用 1 楼 qq423399099 的回复:
这个当然没有影响。。。 你在main函数中的p1和p2类型是int * 而你定义的swap函数类型也是int * 啊 (楼主以为*离p1近就和p1结合了啊。。。。) int swap(int *p1, int *p2)和int swap(int* p1, int* p2)一样的(这样楼主是不是就懂了呢)
受教了,谢谢哈~问一个题外话,我现在还是一名学生,语言方面是从C++开始学的,之前还有学过一些C,但是因为我怕贪多嚼不烂,所以暂时放弃C,我想问,我以后想找一份好点的工作,在学完C++之后应该学什么语言?
小灸舞 版主 2016-04-11
  • 打赏
  • 举报
回复
这个当然没有影响。。。 你在main函数中的p1和p2类型是int * 而你定义的swap函数类型也是int * 啊 (楼主以为*离p1近就和p1结合了啊。。。。) int swap(int *p1, int *p2)和int swap(int* p1, int* p2)一样的(这样楼主是不是就懂了呢)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧