指针和下标的关系

一维数组名是个指针常量
                    它存放的是一维数组第一个元素的地址
# include <stdio.h>

int main(void)
{
    int a[5]; //a是数组名  5是数组元素的个数 元素就是变量  a[0]  -- a[4]
//    int a[3][4]; //3行4列 a[0][0]是第一个元素 a[i][j]第i+1行j+1列
    int b[5];

    //a = b;//error a是常量
    printf("%#X\n", &a[0]);
    printf("%#X\n", a);

    return 0;
}
/*
    在Vc++6.0中的输出结果是:
--------------
0X12FF6C
0X12FF6C
Press any key to continue
--------------
    总结:
        一维数组名
                    一维数组名是个指针常量
                    它存放的是一维数组第一个元素的地址

*/

 指针和下标的关系

# include <stdio.h>

int main(void)
{
    int a[5] = {1,2,3,4,5};
    int i;

    for (i=0; i<5; ++i)
        printf("%d\n", a[i]);  //a[i] == *(a+i) 

    return 0;
}

demo2.

# include <stdio.h>

int main(void)
{
    int a[5] = { 1,2,3,4,5};

    for( int i = 0 ; i < 5 ; i++ ){
        printf("%d \n" , a[i]);
    }

    for(i = 0 ; i < 5 ; i++ ){
        printf("%d \n" , *(a+i));
    }

return 0 ;
}

指针和下标的关系

时间: 2024-12-29 04:14:01

指针和下标的关系的相关文章

const,指针与引用的关系

看完C++Primer第二章后,对于const,指针和引用以及后面的constexpr,auto之类的关系异常混乱,特此整理. 一.const必须初始化 const int i = 42; const int j = get_size(); 二.const 和 引用    1.常量引用(对常量的引用):将引用与一个常量对象绑定 const int ci = 42; const int &r1 = ci; 2.除此之外,允许一个常量引用绑定一个非常量的对象,字面值或表达式 int i = 42;

函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)

记得刚开始工作时,一位高手告诉我说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后来明白那不单是跳来跳去那样简单,而是一种高级的异常处理机制,在某些情况下确实很有用. 事实上,longjmp和 setjmp玩得熟不熟与是不是C语言高手,不是因果关系.但是,如果可以套用那位高手的话,我倒想说如果函数指针玩得不熟,就不要自称为C语言高手.为什么这么说呢,函数指针有那么复杂吗?当然不是

指针与数组的关系

指针与数组间关系紧密却一直没弄明晰,今天就来整理一下. ①定义中的内涵 当我们在定义数组时,必须要同时指定其类型和大小:而对于指针,则只需要指定其类型. 之所以数组需要指定大小,是因为系统会根据你所指定的大小为数组分配空间,例如int a[5],则数组得到sizeof(int)*5大小的存储空间(而且是连续的空间),不多不少. 而对于指针,系统只会为其分配空间,其指向地址并未分配,例如char *a,系统会为变量a分配空间,但*a(即a指向的地方)是随机的,系统不会为*a分配空间.这时候,你可以

c/c++(疑3) C语言指针与数组之间关系

c/c++ (疑1)数组和指针 c/c++(疑2) const extern 有了前面 两篇 基础,下面我们可以更深入的来介绍c/c++(疑3) C语言指针与数组之间关系 1 概述(C语言指针与数组之间关系) 指针就是指针,指针变量在32 位系统下,永远占4 个byte,其值为某一个内存的地址.指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到. 数组就是数组,其大小与元素的类型和个数有关.定义数组时必须指定其元素的类型和个数.数组可以存任何类型的数据,但不能存函数. 2    

C/C++指针和数组的关系

首先一个列子说明指针和数组真的不是一回事: 浅谈C中的指针和数组(一) 如果用硬是把数组和指针放在一个,一个放声明里一个放定义中,这里就能看到指针和数组名是不同的.这篇文章从符号表的角度分析一下指针和数组名的不同点,两种东西在数据访问的时候的不同点. 有关不同点,再来点更深层次的东西: 浅谈C中的指针和数组(二) 接下来看看指针和数组名的相同点,但是有两点特例.也即是sizeof和&操作的时候,他们表现的对象是不同的. 浅谈C中的指针和数组(三) C/C++指针和数组的关系

c/c++ 函数、常量、指针和数组的关系梳理

压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习……无限循环中,好记性不如烂笔头……从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和类型,c 中的数组参数是引用形式传参(传址调用),而常量标量是按值传递. //[]方括号表示声明的是数组,里面的数字表明了数组包含的元素数目 int states[50];//声明50个整数的数组 double code[365];//声明365个浮点数的数组 char chr[20];//声明20

C指针和数组的关系详解

1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即int arr[], *parr).它们之间有如下"内幕": 1.数组的名称arr本身就是一个指针,这个指针指向数组的第一个元素 2.因为名称arr本身是指针,所以可以直接赋值给同类型的指针parr:parr = arr,这使得parr也指向数组的第一个元素,所以这个赋值过程等价于parr = &arr[0] 3.指针和数组名在效果上是等价的.它们的区别在于:指针

C语言指针与函数的关系

一: 函数和指针关系: 1)指向函数的指针 2)指针作为函数的参数 int max(int *p1,int *p2){ } 1)实参可以是一个指针 2)也可以是一个和形参类型相同的数组的数组名 3)返回值是指针的函数: 指针函数 char* 函数名(){ return 地址 } //返回值是一个字符串指针 char * test(){ return "xxxx"; } char * test2(){ char ch='a'; return &ch; } 二: 函数的指针: 1)

指针和数组的关系

1.一维数组 Int  a[5]={1.2.3.4.5}: 1)( P=&a[0]和p=a等价) 在C语言中数组名就是该数组的首地址 2)printf("%d",a[1]); printf("%d",*(a+1)); 当我们以前使用a[1]的时候, 事实上计算机内部自动将其转换为*(a+1) 3) int a=[5]; int i,*p=a; for(i=0;i<5;i++,p++){ scanf("%d",p); } for(i=