数组和指针

2019-06-09  本文已影响0人  arkliu

数组初始化

#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
上一篇 下一篇

猜你喜欢

热点阅读