-1
非常基本的問題。訣竅是數組被定義爲二維數組。使用C中的指針打印數組的值
int main(){
int mat[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int index;
for (index = 0; index < 9; index++){
// only change code below this line
// print the value at this index using pointer arithmetic
//below is my code
printf("%p\n", *(&mat + index));
}
return 0;
}
我是新來的指針。據我所知,'&'指針指向地址,*指針指向該地址的值,對吧?
輸出應該是一個獨立的行
'&mat + index'是未定義的行爲,除非'index == 0'或'index == 1'。 '*(&mat + index)'是未定義的行爲,除非'index == 0'。 'printf(「%p \ n」,*(&mat + index));'總是未定義的。 – EOF
使用'printf(「%d \ n」,*((int *)&mat + index));'獲得預期的行爲 –