main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b; b=a;
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/15 20:22:48
main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b; b=a; printf("%d",a[1][1]); printf("%d",b) }
main()
{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int *b;
b=a;
printf("%d",a[1][1]);
printf("%d",b[1][1]);
为什么printf("%d",a[1][1]);能运行,而且b=a也能运行,但是printf("%d",b[1][1]);就不呢不运行
}
为什么改为int (*b)[3]就可以了?下表运算符是什么?而且printf("%d",b[0][0])也不行
经过我的实验,原来a和b值是一样的,只不过他们的机制不一样,a+1则a[1]的地址,而b+1则为a[0][1]地址,所以上面的就不对了.
main()
{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int *b;
b=a;
printf("%d",a[1][1]);
printf("%d",b[1][1]);
为什么printf("%d",a[1][1]);能运行,而且b=a也能运行,但是printf("%d",b[1][1]);就不呢不运行
}
为什么改为int (*b)[3]就可以了?下表运算符是什么?而且printf("%d",b[0][0])也不行
经过我的实验,原来a和b值是一样的,只不过他们的机制不一样,a+1则a[1]的地址,而b+1则为a[0][1]地址,所以上面的就不对了.
把b的定义改为,int (*b)[3]就可以了
定义成这样子,说明b是一个指向一个长度为3的一维数组,也就是书上所说的行指针.意思是,b+1,就指向了a[1],一下子跳过了a[0](一共六个字节),而不是指向a[0][1];
你本来把b定义成int *b;则这个是列指针,即一次只移动一个int
的长度(两个字节).所以此时的b+1,就指向了a[0][1];
定义成这样子,说明b是一个指向一个长度为3的一维数组,也就是书上所说的行指针.意思是,b+1,就指向了a[1],一下子跳过了a[0](一共六个字节),而不是指向a[0][1];
你本来把b定义成int *b;则这个是列指针,即一次只移动一个int
的长度(两个字节).所以此时的b+1,就指向了a[0][1];
main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *b; b=a;
int main() { int a[9] = {1,2,3,4,5,6,7,8,9}; int b[9] = {1,2
#include void main(){ int b=3;int a; int arr[]={6,7,8,9,10};
#include void main( ) { int a=3,b=5; int *p,*q; void f1(int
#define N 10 main() { int a[N]={1,2,3,4,5,6,7,8,9,10} int i,
#include int main() { using namespace std; int a=3,b=7,c; c=
void func(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5];a=0;b
#include using namespace std; int main() { int a,b,c; a=3; i
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int **p; p=(int**)a;
(5)main( ) { int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; for(k=0
下列程序的输出结果是int main(void){int a[10] = {0,1,2,3,4,5,6,7,8,9},
有如下程序,int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5