郁闷的p=(int *)i;与p=(int *)&i;
#include "stdio.h"
void main()
{
int i[]={2,3};
int *j=i;
int **k=&j;//双指针,正确;
int *p=NULL;
// k=&i; //i就表示一个数组地址,&i也表示双指针,为什么这里出错?
//提示cannot convert from 'int (*)[2]' to 'int ** '
//int (*)[2]应该是数组指针吧?比如int (*c)[2];c=arry[3][2],在这里c也是当作双指针来用的啊~
// i=(int *)&i;//提示cannot convert from 'int *' to 'int [2]'
// k=(int *)&i; //提示cannot convert from 'int *' to 'int ** '
// k=(int *)i;//提示cannot convert from 'int *' to 'int ** '
p=(int *)i;
p=(int *)&i;
//这里的两个强制转换都可以,在这里&i和i到底有什么区别?难道&没有用吗?
}
//还有我在其他地方也看到这个情况,比如mfc的库文件里面经常有这样的表达。
//比如:
//pArgList = (char *) &szFormat + sizeof (szFormat)
//这里的szFormat为char * 类型。
//又比如:函数指针的转换(int (*)(void))copy 和 (int (*)(void))© 有什么区别吗?