关于指针 C语言小程序 请问我错在哪?

来源:百度知道 编辑:UC知道 时间:2024/07/04 20:32:38
自己编写的测试程序如下:
#include <stdio.h>
const char array1[2][2] = {1,2,3,4};
const char array2[2][2] = {5,6,7,8};
const char **p;
void main(void){
p = (const char **)array1;
printf("%d\n", p[1][1]);
p = (const char **)array2;
printf("%d\n", p[1][1]);
}
以上的程序中我的用意是想:将指定的数组地址付给指针p,然后通过指针p来访问指定的数组的成员。
上面的程序编译能够通过,但是一运行好像就越界了,请问我错在哪里?为什么?
如果想实现此功能如何编写程序?
答案满意的我给加分!
ytunx您好!
您的做法是不越界了,但是输出的值不知道是什么,很乱啊。请参考图片。

#include <stdio.h>
char array1[2][2] = {1,2,3,4};
char array2[2][2] = {5,6,7,8};
char *p;
void main(void){
p = (char*)array1;
printf("%d\n", p[1*2 +1]);
p = (char *)array2;
printf("%d\n", p[1*2 +1]);
}
为了调这个程序我死了N回机

这样写看行不:
#include <stdio.h>
const char array1[2][2] = {1,2,3,4};
const char array2[2][2] = {5,6,7,8};
const char **p;
void main(void){
p = (const char **)array1;
printf("%d\n", p[1]);
p = (const char **)array2;
printf("%d\n", p[1]);
}