美文网首页十天学会C语言程序员
C语言day09-01指针和数组

C语言day09-01指针和数组

作者: liyuhong165 | 来源:发表于2016-05-04 23:38 被阅读101次

pragma mark 指针和数组

pragma mark 概念

pragma mark 代码

#include <stdio.h>
int main()
{
#warning 指针和数组
#warning 定义一个指针指向数组
    /*
    int num = 10;
    int *numP = #
    num = 55;
    *numP = 100;
    printf("%i\n",num);
    printf("%i\n",*numP);
    
    int ages[3] = {1,3,5};
    // 数组名称就是数组的地址,数组的地址就是首元素的地址
    printf("ages = %p\n",ages);
    printf("&ages[0] = %p\n",&ages[0]);
    
    // 指针是专门用于保存地址
    // 数据类型 *变量名称;
    // 由于数组的首元素的地址就是数组的地址,所以定义一个指针指向数组其实就是定义一个指针指向数组的首元素,所以数组的首元素是什么类型,那么指向指向数组的指针就是什么类型.
//    int *p = &ages[0];
    int *p = ages;
    printf("p = %p\n",p);
    printf("&ages[0] = %p\n",&ages[0]);
     */
#warning 如何利用指针操作数组 方式1
    /*
    int ages[3] = {1,3,5};
    ages[0] = 998;
    // 相当于 0x7fff5fbff79c[0]
    printf("ages[0] = %i\n",ages[0]);
    
    int *p = ages; // int *p = &ages[0]; &ages == ages
    printf("p = %p\n",p);
    printf("ages = %p\n",ages);
    
    // 因为p指针中存储的值和ages中存储的值相同,所以以前用ages的地方都可以使用p来替代
    p[0] = 221;
    // 相当于 0x7fff5fbff79c[0]
    printf("age[0] = %i\n",p[0]);
    
    for (int i = 0; i < 3; i++) {
        printf("p[%i] = %i \n",i,p[i]);
    }
     */
#warning 方式2
    
    /*
    int ages[3] = {1,3,5};
    int *p = ages; //int *p = &ages[0];
    printf("ages[0] = %i\n",ages[0]);
    printf("*p = %i\n",*p);
    
    printf("指针加1之前 p = %p\n",p);
//    p = &ages[1];
    // 指针+1, 并不是真实的+1,而是+4
    // 指针+1, 其实是加上指针类型所占用的长度
    // 指针类型的两个用途: \
    第一个用途 : 取值的时候, 会根据指针类型所占用的字节 去 取出对应字节的数据 \
    第二个用途, 用于做加法运算, 指针+1 , 其实是加上指针类型所占用的长度,如果当前指针类型是int,  那么+1本质上是加上4个字节
    
    p = p + 1;
    printf("指针加1之后 p + 1 = %p\n",p);
    printf("*p = %i\n",*p);
//    p = &ages[2];
    p = p + 1;
    printf("指针加1之后 p + 2 = %p\n",p);
    printf("*p = %i\n",*p);

    
    int a = 10;
    a = a + 1;
    printf("a = %i\n",a);   // 11
     */
    
    /*
    int num = 10;
    int *numP = #
    printf("num = %i\n",num);
    // *numP 代表访问numP之乡的那块内存空间
    printf("*numP = %i\n",*numP);
     */
 
    /*
    char c = 'a';
    char *cp = &c;
    printf("cp = %p\n",cp);
    cp = cp + 1;
    printf("cp  + 1 = %p\n",cp);
    cp = cp + 1;
    printf("cp  + 1 = %p\n",cp);
     */
    
    int ages[3] = {1,3,5};
    int *p;
    p =ages;
    /*
    printf("age[0] = %i\n", *p + 0);
    printf("age[i] = %i\n", *(p + 1)); // p = p + 1; *p;
    printf("age[2] = %i\n", *(p + 2)); // p = p + 1; *p;
     */
    /*
    for ( int i = 0 ; i < 3; i++) {
        printf("ages[%i] = %i\n",i,*(p + i));
    }
     */
    
    /*
     只要一个指针指向了数组,那么访问数组就有3种方式:
     1 : ages[0];
     2 : p[0];
     3 : *(*p + 0);     // 大神的写法 另一种访问方式 0[p]
     */
    
    
    printf("age[0] = %i\n",0[p]);
    
    return 0;
}

相关文章

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • C语言 - 中

    总目录 前言 本文介绍C语言的指针:一、指针介绍二、指针使用三、数组指针和指针数组 函数指针和指针函数 环境 1...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • 指针数组&数组指针

    本节继续讨论C语言中的指针。 指针数组&数组指针 先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个...

  • 指针与数组的区别和联系

    原文地址:指针与数组的区别和联系作者:zhenhuaqin 一.指针与数组的联系: 指针与数组是C语言中很重要的两...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • C语言数组和指针

    1.const 关键字声明后数据不能修改 2.sizeof 数组名指的是整个数组的大小(以字节为单位) size...

网友评论

  • liyuhong165:这个是我之前随便写的 你取num的地址就行了
  • 6fdc6958f4a7:让 *numP=#为什么报错?=#是什么含义呢?

本文标题:C语言day09-01指针和数组

本文链接:https://www.haomeiwen.com/subject/axcdrttx.html