免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: scutan
打印 上一主题 下一主题

[函数] 关于指针与函数的几点小结 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-09-19 21:48 |只看该作者
原帖由 ypxing 于 2007-9-19 21:46 发表
不对


哪里不对了?

说一下题外话,CU的数据库是不是出现问题了,我想开通博客老是出现数据库错误~

[ 本帖最后由 ddvv 于 2007-9-19 21:50 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-09-19 21:52 |只看该作者
原帖由 ddvv 于 2007-9-19 21:45 发表
恩,关于多为数组我晓得,只是不理解int (*a)[10]这个声明。
如此看来,a就相当与一个指针的指针,也就是int **a了,不知道这样理解对不对?


不是的
int **a, a此时为一个指针, 其指向的地址中的内容也为一个指针类型, 而int (*a)[]这种方式, a是一个指针, 但是其指向的内容是一个int类型.
对于这种情况, 很容易犯的错误就是在函数调用时.

  1. int a[10][4];
  2. void fun(int **p);
  3. fun(a);
复制代码

这种使用方式.

论坛徽章:
0
23 [报告]
发表于 2007-09-19 21:57 |只看该作者

哎,混乱了~看来是基础没学好,我再去找找相关的资料来看看吧。。。

论坛徽章:
0
24 [报告]
发表于 2007-09-19 22:00 |只看该作者
int a[10];与int *a;是有区别的
sizeof, &a+1意义都不相同

同理int (*a)[10];与int *(*a);也是不一样的

原帖由 ddvv 于 2007-9-19 21:45 发表
恩,关于多为数组我晓得,只是不理解int (*a)[10]这个声明。
如此看来,a就相当与一个指针的指针,也就是int **a了,不知道这样理解对不对?

论坛徽章:
0
25 [报告]
发表于 2007-09-19 22:18 |只看该作者
受益了,不过有一个问题没有理解。
第一个程序中&fun和fun的地址为什么是相同的啊?

比如下面这个程序:
int main()
{
    int a  = 13;
    int *p = &a;
    printf("%p\n", p);
    printf("%p\n", &p);
    printf("%p\n", &a);

    return 0;
}

结果是:
<abcd:/home/abcd>./a.out
0xbfa19b40
0xbfa19b3c
0xbfa19b40

论坛徽章:
0
26 [报告]
发表于 2007-09-19 22:25 |只看该作者

回复 #17 scutan 的帖子

二维数组行指针。。。

论坛徽章:
0
27 [报告]
发表于 2007-09-19 22:29 |只看该作者
原帖由 wzabcd1234 于 2007-9-19 22:18 发表
受益了,不过有一个问题没有理解。
第一个程序中&fun和fun的地址为什么是相同的啊?

比如下面这个程序:
int main()
{
    int a  = 13;
    int *p = &a;
    printf("%p\n", p);
    printf("%p\n", ...


&fun是该函数的地址, 为指针类型, fun是一个函数, 会转换成其指针类型

论坛徽章:
0
28 [报告]
发表于 2007-09-19 22:37 |只看该作者
嗯,谢谢了,是我想复杂了。

论坛徽章:
0
29 [报告]
发表于 2007-09-19 22:58 |只看该作者
又学到不少东西~

论坛徽章:
0
30 [报告]
发表于 2007-09-19 23:36 |只看该作者
原帖由 ddvv 于 2007-9-19 21:57 发表

哎,混乱了~看来是基础没学好,我再去找找相关的资料来看看吧。。。

C专家编程上有很好的解释,建议看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP