指针地址偏移问题*(p+3)+=2;及指针赋初值
static int a[6]={1,2,3,4,5,6};
int *p=a;
*(p+3)+=2;//*(p+3)为第四个元素的地址,自加2,偏移两位指向6;
printf("%d,%d,%d",*p,*(p+3),*(p+5));
1,6,6
int *p;
*p=10;
printf("%d",*p);
会报错;指针没分配地址不能赋值;改成:
int *p;
p=malloc(sizeof(int));
*p=10;
printf("%d",*p);
就对了;
指针赋初始值,提问:
//头文件
typedef struct _MyData {
SOCKET sConn;
int ConnNum;
} MYDATA, *PMYDATA;
……
protected:
PMYDATA pData;
//CPP文件
构造函数初始化
pData=NULL;
void CView::OnBnClickedBtnStart()
……
SOCKET m_sock;
int n;
……
//m_sock,n 被赋值(略)。
//pData一直显示0x00000000 {sConn=??? ConnNum=??? }_MyData *
//ConnNum:CXX0030: 错误: 无法计算表达式的值
//sConn:CXX0030: 错误: 无法计算表达式的值
pData->ConnNum=n;
pData->sConn=m_sock;
//上面的赋值出错!
//xxx.exe 中的 0x00414d3c 处未处理的异常: 0xC0000005: 写入位置 0x00000004 时发生访问冲突
我的pData分明已经初始化了啊!
解答:

浙公网安备 33010602011771号