读书人

关于指针施用

发布时间: 2013-01-23 10:44:49 作者: rapoo

关于指针使用
static AFX_MSGMAP_ENTRY _messageEntries[]={...};({...}代表里面有内容)
AFX_MSGMAP_ENTRY* lpEbntries=(AFX_MSGMAP_ENTRY*)&(_messageEntries);

_messageEntries不就是_messageEntries[]的地址吗,为什么还要加个&,而且为什么前面还强制类型转换成AFX_MSGMAP_ENTRY*

AFX_MSGMAP_ENTRY* lpEbntries= _messageEntries;不行吗
[解决办法]
指向数组的指针和指向数组第一个元素的指针是两码事。

数组是一种独立的类型,和int没什么区别,一个指向数组的指针+1则偏移整个数组大小的内存地址。
数组名是数组第一个元素的地址,+1则偏移一个元素的内存地址。

注意C语言基础功。
[解决办法]
可以简单写个程序测试下


//a 、&a、(int*)&a值相同,类型不同
//a-------int*
//&a-----int(*p)[3]
//(int*)&a-----int*
int a[] = {1,2,3};
cout<<"a = "<<a<<endl;
cout<<"&a = "<<&a<<endl;
cout<<"(int*)&a = "<<(int*)&a<<endl;

cout<<"a+1 = "<<a+1<<endl;
cout<<"&a+1 = "<<&a+1<<endl;
cout<<"(int*)&a+1 = "<<(int*)&a+1<<endl;

读书人网 >C++

热点推荐