12-4-26关于普通函数指针,类成员函数指针,char(*)[]
来源:互联网 发布:淘宝卖家开通企业店铺 编辑:程序博客网 时间:2024/05/08 09:14
1,普通函数指针
例子:
通过上面的代码,我们可以得到函数指针的初始化,调用情况
2,类成员函数指针
我们可以发现,成员函数指针类型初始化,调用是不同于一般的函数指针
3,下面我们重点谈谈char (*p)[3],char p[3]
char (*p)[3]定义了一个指向char型的数组的指针,等同于char p[][3],这里p+1,就是第二行的首地址了
char p[3]定义了一个char 型数组
我们再来看代码,例如,char p[3]:其中p就是数组的首地址,其类型为char *,而&p是表示数组的地址。类型为char (*)[3],经过编译得到结论其实二者在数值上是相等的。
但是,二者是不等同的,char (*p)[3] 中 p 与p+1的差距为3*sizeof(char p[3]),这就是char (*)[3]类型的震撼之处
因此char (*p)[3]的p是一个指针,它代表了3个元素。他是名符其实的指向了整块数组
char p[3]的p也是指针,但是他仅代表了&p[0],一个元素。确切点就是该元素的地址
4,关于sizeof
数组名a代表数组首地址, &a代表的是数组地址,两个sizeof效果一样都是16,但是a+0代表的是指向0号元素的指针 ,那么就是4了.
当然我们这里的cpu寻址地址为32位的。编译器是vc 6.0
如果a为二维数组名,sizeof(a)则是整个数组所占的空间。
设a为两行四列的整型数组
sizeof(a)代表的是整个二维数组的大小,*a表示*(a+0),*a代表的是第一行一维数组的首地址,sizeof(*a)=16
而&a[0]等价&(*(a+0)),其中&与*抵消,相当于a+0,数组名参与了指针偏移运算,sizeof(&a[0])=4
&a[0][0]等价&(*(*(a+0)+0)),当&与*抵消后, 为*(a+0)+0,而*(a+0)代表第一行一维数组的首地址,而他参与了偏移运算,sizeof(&a[0][0])则为4
因此不管几维,重点参考数组名是否参与偏移运算。一旦参与,sizoe()就是指针在内存的大小了
- 12-4-26关于普通函数指针,类成员函数指针,char(*)[]
- 关于成员函数指针和普通函数指针的转换
- 普通函数指针与成员函数指针
- 普通函数指针与类成员函数指针的区别
- 类的普通成员函数的指针
- 类的普通成员函数的指针
- 类的普通成员函数的指针
- 关于类成员函数指针
- c++ 成员函数 普通函数指针转换
- 关于函数指针用于类成员函数
- 向普通函数传递类成员函数指针的问题
- 向普通函数传递类成员函数指针的问题
- 类成员函数当作普通函数指针 用于callback
- 普通函数,成员函数,静态成员函数与【指针】
- 普通函数指针和指向成员函数指针(转载)
- C++学习之普通函数指针与成员函数指针
- C++学习之普通函数指针与成员函数指针
- C++普通函数指针与成员函数指针实例解析
- 轻身健脾与护肝
- spi FLASH 问答
- ubuntu设置默认启动字符界面
- 网络的各种协议类型
- Android activity的生命周期
- 12-4-26关于普通函数指针,类成员函数指针,char(*)[]
- Windows server 2003 远程桌面登录本地console的方法
- 真正的美剧字幕组翻译高手教你如何学好英语!心得经验之谈啊有木有
- C#Visual Studio 资源使用?
- Linux 时间信息打印
- 多比矢量图控件开发文档(一)
- oracle的marge into 语法
- C语言 优先级口诀
- tomcat启动报错:Error configuring application listener of class org.springframework.web.context.ContextLo