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分明已经初始化了啊!
解答: