码迷,mamicode.com
首页 > 编程语言 > 详细

数组与指针

时间:2019-02-07 00:01:02      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:clu   元素   方法   必须   定义   变量   for   main   std   

一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用储存单元,它们都有相应的地址。

指针变量既可以指向变量,也可以指向数组元素(把某一元素的地址放在一个指针变量中)。

所谓数组元素的指针就是数组元素的地址。

定义一个指向数组元素的指针变量的方法,与指向变量的指针变量相同。

例:int a[10];

  int *p;

  p=&a[0];

注:若数组为int型,则指针变量的基类型也为int型。

引用一个数组元素,可以用:

(1)下标法,如a[i]形式;

(2)指针法,如*(a+i)或*(p+i)。

基中的a是数组名,p是指向数组元素的指针变量,其初值p=a等价于p=&a[0]。

注:数组名即编译为数组的第一个元素的地址。

例:输出数组中的全部元素。

假设一个a数组,整型,有10个元素,要输出个元素的值有三种方法。

(1)下标法。

(2)通过数组名计算数组元素地址,找出元素的值。

(3)用指针变量指向数组元素。

下标法:

#include <stdafx.h>
#include<stdio.h>

void main()
{
    int a[10],i;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
    }
}

指针法:

#include <stdafx.h>
#include<stdio.h>

void main()
{
    int a[10],i;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    for(i=0;i<10;i++)
    {
        printf("%d",*(a+i));
    }
}

指针变量法:

#include <stdafx.h>
#include<stdio.h>

void main()
{
    int a[10],i,*p;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    p=a;
    printf("\n");
    for(i=0;i<10;i++)
    {
        printf("%d",*p);
        p++;
    }
}

思考:

#include <stdafx.h>
#include<stdio.h>

void main()
{
    int a[10],i,*p;
        p=a;
    for(i=0;i<10;i++)
    {
        scanf("%d",&p++);
    }
    printf("\n");
    for(i=0;i<10;i++,p++)
    {
        printf("%d",*p);
    }
}

错误原因:&后必须接函数指示符

纠正:第十行改为        scanf("%d",&p+i);

 

数组与指针

标签:clu   元素   方法   必须   定义   变量   for   main   std   

原文地址:https://www.cnblogs.com/lvfengkun/p/10354205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!