c语言指针与数组
2015-09-04 11:55
330 查看
// // 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]); } }
指针:永远指向的是一个地址,我们可以通过此地址来操控存储空间的值。
指针指向数组时,指向的是数组的首地址,通过首地址可以操作数组;
通过上面的例子,我们可以看到,当指针指向一个数组时,指针和数组是可以互换使用的。
相关文章推荐
- 【C语言连载五】--------指针
- C/C学习笔记/指针与数组
- 指针与数组的区别
- 这篇不是什么技术博客,只是C++上课的例题,做个笔记
- 指针与数组用法笔记
- 指针与数组 连载2
- 指针与数组 连载2
- C语言系列之 指针与数组总复习视频教程
- C++Primer第五版 第三章习题答案(41~45)
- 指针详解
- 指向数组的指针
- 指针学习笔记(4)——指针与数组
- 用变量a给出下面的定义
- 指针与一维、二维数组
- 4-18-2-二级多级指针、指针与数组、多线程并行计算、多线程队列、字符串拷贝
- 4-18-1-使用指针交换数据、多线程参数传递、多线程通信、指针与数组
- 指针变量和一维数组的关系
- C语言基础学习——第5天(指针)
- C语言栈的实现及利用栈实现二进制到八进制的转换
- C++指针和引用