数组与指针(剑指offer数据结构部分)
2015-05-13 10:34
148 查看
#include<stdio.h> int getSize(int data[ ]) { return sizeof(data); } int main() { int data1[] = {1,2,3,4,5}; int size1 = sizeof(data1); int* data2 = data1; int size2 = sizeof(data2); int size3 = getSize(data1); printf("%d %d %d ",size1,size2,size3); }
上例结果为20,4,4。分析:size1要得到的是数组data1的大小,故每个整数占了4个字节,故size1=20,data2是指向数组data1第一个元素的指针,size2要得到指针data2的大小,相当于求一个指针的大小,故指针大小一般为4个字节,数组data1作为getSize函数的参数进行传递,数组自动退化成为同类型指针,所以返回值就是指针的大小而不是数组的大小,为4.
数组与指针之间的关联:数组类似于指针,数组名即为指针,指向数组的第一个元素,指针也可访问数组。用指针访问数组时,要注意查找边界问题,指针无法知道数组的大小,
相关文章推荐
- 剑指offer-数据结构:数组和指针(基础知识)
- 剑指offer-和为S的两个数组-两根指针
- 剑指offer面试题2.3.1——数组和指针的区别
- 剑指offer :奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分
- 剑指offer题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 剑指offer(二.2)数据结构之数组2 面试题3
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指offer31——连续子数组的最大和
- [九度 1510 剑指offer]—替换空格 数组插入逆向移动
- 剑指offer(5) 旋转数组中的最小值
- 剑指offer(53):数组中重复的数字
- 剑指offer-面试题8:旋转数组中的最小数字
- 剑指offer面试题38 数字在排序数组中出现的次数
- 剑指Offer----面试题29:数组中出现次数超过一半的数字
- 【剑指offer】把数组排成最小的数
- 剑指offer39——数字在数组中出现的次数
- [剑指offer]连续子数组的最大和
- 剑指offer-题29:数组中出现次数超过一半的数字
- 剑指Offer 51数组中的重复数字 Java版
- 剑指offer部分题目整理