关于二维数组和二维指针的相关问题
来源:互联网 发布:红警2网络打不开 xp 编辑:程序博客网 时间:2024/05/17 13:11
问题:
#include <stdio.h>
int main(void){
int **p;
int arr[10]; //suppose the address of the arr[10] is 0x1200;
int i;
for(i=0;i <10;i++)
{
arr[i] = (int)arr + i;
}
p = &arr;
p[8][3] = 12;
for(i=0;i <10;i++)
{
printf("%x,",arr[i]);
}
return 0;
}
1、错误在于p = &arr;改为p=(int**)arr或者p=(int**)&arr , vs2003下编译通过。
这个是一维数组名赋给二维指针错误,其实二维数组名赋给二维指针一样需要强转。如下:
二维数组名不能简单理解成二维的指针,int a[4][5]; a是二维数组的首地址,但它不是一个int **型的指针。int **p = a;这样赋值是错误的,用指针对二维数组的操作应该参考用指针数组(int * p[4])或者或者行指针((int *)p[4])的方式。
2、关于p[8][3] = 12;
p[8][3] --> *(*(p+8)+3) -->*(1208 +3) 因为这种形式,括号外是*,所以括号里面变成地址相加,步长就是数组成员的长度,整形占4个字节,所以变为->*1220 ->此即是arr[5];所以最后结果是
1200,1201,1202,1203,1204,12,1206,1207,1208,1209
- 关于二维数组和二维指针的相关问题
- 关于二维数组名和指针的指针的问题
- 关于指针的指针和二维数组
- 关于二维数组地址和指针之间赋值的问题
- 关于二维数组指针的问题?
- 关于二维数组和二维指针的理解总结
- 二维数组和二维指针的传递问题
- 关于二维数组和指针
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 二维数组和二维指针的关系
- 二维指针和二维数组的关系
- 二维指针和二维数组的区别
- 二维数组和二维指针的关系
- C++二维指针和指针数组的相关介绍
- 指针 二维数组的问题
- 二维数组的指针问题
- 二维数组和二维指针
- 博文开篇 简单专注,喜欢学习
- rails 部分插件--解析
- mod_python中文文档
- 中文搜索引擎提交大全
- 系统程序员成长计划-写得又快又好的秘诀(三)
- 关于二维数组和二维指针的相关问题
- 在MS-SQL2000中模拟窗口函数ROW_NUMBER()
- 智能手机系统Windows mobile和Symbian的选择
- 两个select的数据移动,支持IE,ff,google浏览器
- 静态类概念
- 人生三件事不能等
- 大中文博客搜索引擎提交
- 细品RibbonX(2):认识Office的新界面—功能区(Ribbon)
- 清除jsp页面缓存