#include<stdio.h>
void main(){
void switchArray(int[3][3]);
int array[][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j;
int(*pToArray)[3];
pToArray=array;
switchArray(pToArray);
return 0;
}
void switchArray(int array[][3]){
int newArray[3][3],(*pTArr)[3],(*pTNewArr)[3];
int i,j;
pTArr=array;
pTNewArr=newArray;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
*(*(pTNewArr+j)+i)=*(*(pTArr+i)+j);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d",*(*(pTNewArr+i)+j));
}
printf("\n");
}
}
int();指针的初始化
对指针进行初始化或赋值只能使用以下四种类型的值:
1.0值常量表达式,例如,在编译时可获得0值的整型const对象或字面值常量0。
2.类型匹配的对象的地址。
3.另一对象末的下一地址。
4.同类型的另一个有效指针。
把int型变量赋给指针是非法的,尽管此int型变量的值可能为0。但允
许把数值0或在编译时可获得0值的const量赋给指针:
int ival;
int zero=0;
const int c_ival=0;
int*pi=ival;//error:pi initialized from int value of ival
pi=zero;//error:pi assigned int value of zero
pi=c_ival;//ok:c_ival is a const with compile-time value of 0
pi=0;//ok:directly initialize to literal constant 0
除了使用数值0或在编译时值为0的const量外,还可以使用C++语言从C语言中继承下来的预处理器变量NULL,该变量在cstdlib头文件中定义,其值为0。如果在代码中使用了这个预处理器变量,则编译时会自动被数值0替换。因此,把指针初始化为NULL等效于初始化为0值:
//cstdlib#defines NULL to 0
int*pi=NULL;//ok:equivalent to int*pi=0;