关于指针使用
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;