c语言指针与数组

//
//  main.c
//  c指针
//
//  Created by stevenchang on 9/4/15.
//  Copyright (c) 2015 cz. All rights reserved.
//

#include <stdio.h>

void printfArray(int array[]);   //声明一个函数,用于打印数组元素

int main(int argc, const char * argv[]) {
    /**
     1.指针与数组
        只需要记得指针永远是指向地址的,不指向地址所在的存储空间。
        只要通过指针得到地址,我们就可以改变指针的地址和通过地址来操作存储空间的值。
     */
    int a[] = {2,3,4,5,6};   //初始化一个int类型的数组
    int *p;     //定义一个指针
    p = a;    //将指针p,指向数组a;  数组名就是数组的首地址
    printf("%d\n",*p);     //这里打印出来的值为2,即数组的首元素
    printf("%d\n", *(p+1));    //通过指针p来获取数组a[1]中的值
    printf("%d\n", p[1]);     //通过指针p来获取数组a[1]中的值
    
    printf("===========遍历=============\n");
    //使用指针遍历数组
    for (int i = 0; i < 5; i++) {
        /**
         指针变量p+1不是简单的数字相加,而是内存地址的相加
            int *p;
            p + 1 :地址值+4;
            double *dp; dp + 2:地址值加2*8
         因此,指针变量p+i,相加的值是根据i的数据类型(int/folat/double...)*i
         */
//        printf("a[%d]=%d\n", i, *(p+i));
        
        printf("%d\n",p[i]);   //这也是一种指针的表达方式
    }
    
    //打印数组元素
    printfArray(a);
    
    return 0;
}

/**
 用于打印数组元素
 */
void printfArray(int *array) {
    //我们可以看到C语言中传递的数组,都将会被转成指针来进行传递,因此,sizeof(array)==8
    //指针类型的sizeof()==8
    //当参数类型改为int *array时,没有警告
    printf("=====%zd\n",sizeof(array));
    for (int i = 0; i < 5; i++) {
//        printf("array[%d]=%d\n",i, *(array+i));
        printf("array[%d]=%d\n",i , array[i]);
    }
}
指针:永远指向的是一个地址,我们可以通过此地址来操控存储空间的值。
     指针指向数组时,指向的是数组的首地址,通过首地址可以操作数组;
     通过上面的例子,我们可以看到,当指针指向一个数组时,指针和数组是可以互换使用的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值