如
int*p;
int a[3][4];
p=(int*)a;
如果可以能解釋一下轉換后的樣子嘛,如果不可以能說下為什么嗎
uj5u.com熱心網友回復:
#include <stdio.h>
int*p;
int a[3][4];
int i,j,k;
unsigned char *b;
int main() {
for (i=0;i<3;i++)
for (j=0;j<4;j++)
a[i][j]=i*4+j;
b=(unsigned char *)&a[0][0];
printf("\n b:%p -",b);
for (k=0;k<3*4*sizeof(int);k++) printf(" %02X",b[k]);
p=(int*)a;
printf("\n p:%p -",p);
for (k=0;k<3*4 ;k++) printf(" %08X",p[k]);
return 0;
}
//
// b:00CD87B4 - 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0A 00 00 00 0B 00 00 00
// p:00CD87B4 - 00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 0000000A 0000000B
uj5u.com熱心網友回復:
int*p;
int a[3][4];
p=(int*)a;//這樣不可以,看一下編譯器是否能讓通過吧
p = &a[0][0]; //這樣是沒問題的。p指向的是第一個元素的首地址,這樣p可以訪問3 x 4=12個元素
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195642.html
標籤:C++ 語言
上一篇:Intel Parallel Studio XE安裝問題
下一篇:C加加建構式問題
