指针与二维数组
来源:互联网 发布:淘宝怎么改默认地址 编辑:程序博客网 时间:2024/05/22 09:11
我们都知道,当定义一个一维数组时候,一维数组的数组名相当于指向元素的指针变量,唯一的区别就是数组名不可重新赋值,而指针变量则可以。并且此地址即为数组首个元素的地址:
例子:
int main(int argc, const char * argv[]){int chars[3] ={7,12,9};int *p=chars;int i;for(i=0;i<3;i++){ printf("%p\n",p+i);} /*0092F73C0092F7400092F744*/}
把上例子中的printf("%p\n",p+i); 更换成 printf("%d\n",p[i]); 打印结果:7,12,9跟数组下标访问元素很像
二维数组可以看作是元素是一维数组的一维数组,参考一维数组跟指针的关系,很容易得出二维数组名相当于是指向一维数组的指针变量,而二维数组的元素一维数组又是指向其内部元素的指针变量,故二维数组可以看做是二级指针变量。
二维数组跟指针怎么赋值那
int i,j;int chars[3][5] = {1,2,3,4,5,6};int (*p)[5] = chars;//int *p = chars; //错误 chars是相当于指向指向一维数组的指针,p是指向int类型的指针,故不能赋值for(i=0;i<3;i++){for(j=0;j<5;j++){printf("%p\n",p[i]+j); //遍历元素的地址 p[i]二维数组中各个一维数组的首个元素的地址 加+j就是一维数组中下一个元素地址printf("%p\n",*p+i*3+j); //遍历元素的地址 *p是二维数组首个元素的地址,即首个一维数组的地址,即一维数组的首个元素的地址+j,同上道理,+i*3是因为每个一维数组3个元素,换一行首个元素地址*p就+3的行数倍printf("%p\n",&p[i][j]); //类似数组操作 这三个打印的完全一样就是遍历每个元素的地址}}
0 0
- 二维指针与二维数组
- 二维数组与二维指针
- 二维数组与二维指针
- 二维数组与指针
- 二维数组与指针
- 二维数组与指针
- 指针与二维数组
- 指针与二维数组
- 二维数组与指针
- 二维数组与指针
- 指针与二维数组
- 二维数组与指针
- 二维数组与指针
- 指针与二维数组
- 二维数组与指针
- 二维数组与指针
- 二维数组与指针
- 二维数组与指针
- ny 1002括号配对问题
- 反思我这几天的惰性
- 计算机专业的一些基本知识
- 整数排序
- 如何修改Ubuntu环境下的命令提示符显示效果
- 指针与二维数组
- Where is the Marble?
- HDOJ 1237 简单计算器(堆栈)
- Array.prototype.slice.call(arguments)
- HDU 4288 Coder(模拟) 附:upper_bound与lower_bound的比较
- iOS反射机制
- virtual empty() const中的const有的作用
- HDU 1272--小希的迷宫【并查集,有值得注意的地方】
- hbase 增删改查 api 简单操作