您的位置:首页 > 编程语言 > C语言/C++

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]);
}
}
指针:永远指向的是一个地址,我们可以通过此地址来操控存储空间的值。
指针指向数组时,指向的是数组的首地址,通过首地址可以操作数组;
通过上面的例子,我们可以看到,当指针指向一个数组时,指针和数组是可以互换使用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针与数组