首页
社区
课程
招聘
[求助]关于指针操作的问题
发表于: 2007-4-20 12:16 4829

[求助]关于指针操作的问题

2007-4-20 12:16
4829
#include<stdio.h>
void main()
{
  

  int *a[3] ; 
  int (*b)[3];
   

  
  printf("%d,%d\n",sizeof(a),sizeof(b));  
  printf("%d,%d\n",sizeof(*a),sizeof(*b));
  
}
程序运行的结果是:
12,4
4,12
Press any key to continue
想请教下上面两个指针有什么区别,在实际当中应该怎么用.

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 216
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
看似很变态的用法,我没有这样用过……

根据你屏幕打印的结果及我的经验分析:

1、int* a[3]是声明定义一个数组a,它具有3个int*成员;
2、 int (*b)[3]是声明定义一个指向一个结构的指针b,它指向包含3个int成员的结构。

很奇怪的语法。根据我的经验,int (*b)()一般是定义函数指针的用法,不过你的却没有参数括对。奇怪。。。。BT
2007-4-20 13:33
0
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
3
int *a[3] ;  //a是一个指针数组
  int (*b)[3]; //b是一个指向每行具有三个int类型元素的数组的指针
   

  
  printf("%d,%d\n",sizeof(a),sizeof(b));  
//sizeof(a)得到是指针数组a的大小3*sizeof(int)
//sizeof(b)指到是指针b的大小4字节即32位指针
  printf("%d,%d\n",sizeof(*a),sizeof(*b));
//sizeof(*a)得到是指针数组a中第一个元素的大小4字节
//sizeof(*b)得到的是b所指向的那一行数组的大小3*sizeof(int)
2007-4-20 18:30
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一个是保存指针的数组
一个是指向数组的指针
2007-4-20 18:35
0
雪    币: 191
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上几位的讲解,终于知道他们怎么用了。
2007-4-24 22:45
0
游客
登录 | 注册 方可回帖
返回
//