免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: rock_jq

[C] 简单指针传递问题 [复制链接]

论坛徽章:
0
发表于 2008-07-29 14:21 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
白羊座
日期:2014-11-19 14:18:59
发表于 2008-07-29 14:36 |显示全部楼层
哦,明白了,指针还真麻烦,备忘一下:

int *p;     p为指向整型量的指针变量
int *p[n];   p为指针数组,由n个指向整型量的指针元素组成。
int (*p)[n];  p为指向整型二维数组的指针变量,二维数组的列数为n
int *p()    p为返回指针值的函数,该指针指向整型量
int (*p)()   p为指向函数的指针,该函数返回整型量
int **p     p为一个指向另一指针的指针变量,该指针指向一个整型量。

论坛徽章:
0
发表于 2008-07-29 15:44 |显示全部楼层
原帖由 鸿钧 于 2008-7-29 14:36 发表
哦,明白了,指针还真麻烦,备忘一下:

int *p;     p为指向整型量的指针变量
int *p[n];   p为指针数组,由n个指向整型量的指针元素组成。
int (*p)[n];  p为指向整型二维数组的指针变量,二维数组 ...


能明白这些已经很不错了
但是“int (*p)[n];  p为指向整型二维数组的指针变量,二维数组 ... ”这句错了
是指向一维数组的指针变量。不是二维

论坛徽章:
0
发表于 2008-07-29 15:46 |显示全部楼层
原帖由 鸿钧 于 2008-7-29 14:36 发表
哦,明白了,指针还真麻烦,备忘一下:

int *p()    p为返回指针值的函数,该指针指向整型量

这句也不妥,p为返回指向整型的指针变量的函数。

论坛徽章:
0
发表于 2008-07-30 00:18 |显示全部楼层
其实不管*bb,还是**p,定义后都应该已经分配了空间,错只错在使用方法出了问题(呃,应该没错吧 )
        char **p;
        foo(&p);
        printf("[%s]\n",p);
这样是可以的,和*bb起的作用一样,且都指向同一段内存
但...这样为什么可以,
foo(&p);
printf("[%s]\n",p);为什么可以这么用?
且当对其解引用时就出错,如printf("[%s]\n",*p);
没摸明白,哪位高人指点一下,多谢!

[ 本帖最后由 c_bee 于 2008-7-30 20:42 编辑 ]

论坛徽章:
0
发表于 2008-07-30 01:20 |显示全部楼层
原帖由 nlylidb 于 2008-7-29 13:02 发表
#include

#define LEN 10
void foo(char **aa) ;

int main() {
    char *bb;
    foo(&bb);
    printf("[%s]\n",bb);

    { /* ????? */
        char **p;
        p = malloc(sizeof(char) ...




p = malloc(sizeof(char));是不对的,因为*p里面要存放一个地址,而不是一个字符,应该是这样
{
    char *p = NULL;
    char **pp = &p;
    foo(pp);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP