美文网首页
数组和指针

数组和指针

作者: arkliu | 来源:发表于2019-06-09 14:50 被阅读0次

数组初始化

#include <stdio.h>

int main()
{
    int arrayint [6]  = { 0,1,2,3,4,5 };
    for (size_t i = 0; i < sizeof(arrayint) / sizeof(int); i++)
    {
        printf("arrayint[%d] = %d \n", i, arrayint[i]);
    }
    return 0;
}

image.png

函数,数组,指针

#include <stdio.h>

int arraysum(int *, int);

int main()
{
    int arrayint [6]  = { 0,1,2,3,4,5 };
    printf("summary is %d", arraysum(arrayint, sizeof(arrayint) / sizeof(int)));
    return 0;
}

int arraysum(int * first, int length) {
    int summary = 0;
    for (size_t i = 0; i < length; i++)
    {
        summary += first[i];
    }
    return summary;
}
image.png

使用指针形参

#include <stdio.h>
#define SIZE 6

int arraysum(int *, int);

int main()
{
    int arrayint [SIZE]  = { 0,1,2,3,4,5 };
    printf("use zhihen summary is %d", arraysum(arrayint, arrayint + SIZE));
    return 0;
}

int arraysum(int * first, int * last) {
    int summary = 0;
    while (first < last)
    {
        summary += *first; // 数组首个元素
        first++; // 数组指针后移一位
    }
    return summary;
}
image.png

指针操作

#include <stdio.h>
#define SIZE 6
void printline(void);

int main()
{
    int arrayint [SIZE]  = { 0,1,2,3,4,5 };
    int * ptr1, *ptr2, *ptr3;
    ptr1 = arrayint;   //数组的首地址
    ptr2 = &arrayint[2];   // 数组第三个元素的地址

    printf("ptr1 is :%p  *ptr1 is :%d  &ptr1 is :%p \n", ptr1, *ptr1, &ptr1);
    printline();
    //指针加法
    ptr3 = ptr1 + 3;
    printf("ptr1+3 is :%p  *(ptr1 + 3) is :%d\n", ptr1+3, *(ptr1 + 3));
    printline();
    //一个指针减去另一个指针
    printf("ptr3 is :%p  (ptr3 - ptr1) is :%p", ptr3, (ptr3 - ptr1));

    return 0;
}

void printline(void) {
    for (size_t i = 0; i < 10; i++)
    {
        putchar('*');
    }
    putchar('\n');
}
image.png

通过指针改变数组内容

#include <stdio.h>
#define SIZE 6

void printline(void);
void printarray(int *, int length);
void multi_array(int *, int length, int mult);

int main()
{
    int arrayint [SIZE]  = { 0,1,2,3,4,5 };
    printarray(arrayint, SIZE);
    multi_array(arrayint, SIZE, 3);
    printline();
    printarray(arrayint, SIZE);
    return 0;
}

void printarray(int *array, int length) {
    for (size_t i = 0; i < length; i++)
    {
        printf("%d", array[i]);
    }
    putchar('\n');
}

void multi_array(int * array, int length, int mult) {
    for (size_t i = 0; i < length; i++)
    {
        array[i] *= mult;
    }
}

void printline(void) {
    for (size_t i = 0; i < 10; i++)
    {
        putchar('*');

    }
    putchar('\n');

}

image.png

相关文章

  • C语言指针相关

    一、指针数组 和 数组指针的区别:1:指针数组,还是数组,数组每个元素是指针。2:数组指针,是指针,指向的是数组。...

  • JNI基础 -- C++基础知识(指针数组)

    数组和指针,数组指针,指针数组 数组 声明一个数组 这个比较简单,不做过多介绍 数组指针 数组指针是一个指针,指向...

  • 数组指针和指针数组

    1.数组名 数组首元素的地址和数组地址是两个不同的概念 数组名代表数组首元素的地址,它是个常量. 变量本质是内存空...

  • 数组指针和指针数组

    1.数组指针(又称行指针) 二维数组赋给一指针时: 2.指针数组 二维数组赋给一指针数组: 小结:数组指针只是个指...

  • 数组指针和指针数组

    指针*p不仅仅是地址(数据访问的位置),还包括所指向类型,即p+1移动的步长(如何访问)。数组指针,char (*...

  • 数组指针和指针数组

    输出结果:Example 数组指针:我我是是大大好人好人Example 指针数组: 我是大好人

  • 数组指针和指针数组

    https://www.cnblogs.com/mq0036/p/3382732.html 一维数组名和二维数组名...

  • 关于二维数组及数组指针和指针数组的深度思考(涉及指针)

    转载请注明在纠结指针数组和数组指针时无意发现的小细节。总算搞清数组指针和指针数组。 数组指针定义 int (*p)...

  • 指针

    指针 数组指针和指针数组 函数指针和指针函数 指针作为参数 指针多用于处理值传递,减少值复制耗费的内存

  • C语言特性(指针数组和指向指针变量的指针)

    指针数组和指向指针变量的指针 指针数组与main()函数形参 声明指针数组与声明普通数组的语法类似,其语法格式如下...

网友评论

      本文标题:数组和指针

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