美文网首页
指针与数组

指针与数组

作者: 爱生活_更爱挺自己 | 来源:发表于2020-07-02 22:08 被阅读0次

指针与数组

传入函数的数组组成了什么?

int isPrime(int x, int knownPrimes[], int numberOfKnoenPrimes)
{
    int ret = 1;
    int i;
    for ( i=0; i<numberOfKnoenPrimes; i++){
        if ( x % knownPrimes[i] == 0){
            ret = 0;
            break;
        }
    }
    return ret;
}
  • 函数参数表中的数组实际上是指针
    • sizeof(a) == sizeof(int*)
    • 但是可以用数组的运算[]进行运算
#include<stdio.h>

void minmax(int a[], int len, int *max, int *min);

int mian(void)
{
    int a[] = {1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55,};
    int min,max;
    printf("main sizeof(a)=%lu,"sizeof(a));
    printf("main a=%p\n",a);
    minmax(a, sizeof(a)/sizeof(a[0]), &min, &max);
    printd("a[0]=%d\n", a[0]);
    printf("min=%d,max=%d\n" ,min, max);
    
    return 0;
}

void minmax(int a[], int len, int *min, *max)
{
    int i;
    prrintf("minmax soizeof(a)=%lu\n", sizeof(a));
    printf("minmax a=%p",a);
    a[0]=1000;
    *min = *max=a[0];
    for(i=1;i<len;i++){
        if( a[i] < *min){
            *min = a[i];
        }
        if( a[i] > *max){
            *max = a[i];
        }
    }
}
main size(a)=68
main a=0xbff67d10
minmax sizeof(a)=4
minmax a=0xbff67d10
a[0]=1000
min=2,max=1000
#include<stdio.h>

void minmax(int *a, int len, int *max, int *min);

int mian(void)
{
    int a[] = {1,2,3,4,5,6,7,8,9,12,13,14,16,17,21,23,55,};
    int min,max;
    printf("main sizeof(a)=%lu,"sizeof(a));
    printf("main a=%p\n",a);
    minmax(a, sizeof(a)/sizeof(a[0]), &min, &max);
    printd("a[0]=%d\n", a[0]);
    printf("min=%d,max=%d\n" ,min, max);
    
    return 0;
}

void minmax(int *a, int len, int *min, *max)
{
    int i;
    prrintf("minmax soizeof(a)=%lu\n", sizeof(a));
    printf("minmax a=%p",a);
    a[0]=1000;
    *min = *max=a[0];
    for(i=1;i<len;i++){
        if( a[i] < *min){
            *min = a[i];
        }
        if( a[i] > *max){
            *max = a[i];
        }
    }
}
main size(a)=68
main a=0xbff67d10
minmax sizeof(a)=4
minmax a=0xbff67d10
a[0]=1000
min=2,max=1000

数组参数

  • 以下四种函数原型是等价的:
    • int sum(int *ar, int n);
    • int sum(int *, int);
    • int sum(int ar[], int n);
    • int sum(int [], int);

数组变量是特殊的指针

  • 数组变量本身表达地址,所以

    • int a[10];int *p=a;//无需&取地址
    • 但是数组的单元表达的是变量,需要用&取地址
    • a == &a[0]
  • []运算符可以对数组做,也可以对指针做;

    • p[0]<==>a[0]
  • *运算符可以对指针做,也可以对数组做

    • *a=25
  • 数组变量是const的指针,所以不能被赋值

    • int a[]<==>int *const a=...

相关文章

  • C语言的数组指针与指针数组(One)

    一、数组指针与指针数组: 数组指针<——>本质是指针 指针数组<——>本质是数组上图: 二、数组指针: int ...

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

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

  • 指针数组 & 数组指针 & 函数指针

    一、指针数组 & 数组指针 普通数组: 即数组名a与(*p)等价,都代表数组的首地址,此为数组指针 指针数组: ...

  • 指针笔记

    指针数组和数组指针 数组指针是指向数组的指针,指针的值与数组首元素地址相同,但范围是整个数组,所以数组指针和数组名...

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

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

  • 指针

    指针数组与数组指针 在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针...

  • iOS 指针详解

    指针数组与数组指针在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针的...

  • 2019-09-18C语言复杂表达式与指针高级应用

    1.指针数组与数组指针 1.1、字面意思来理解指针数组和数组指针 (1)指针数组的实质是一个数组,这个数组中存储的...

  • 数组知识点

    数组指针与指针数组: int(*p)[4]; --定义数组指针p,指向含4个元素的一维整型数组的指针变量(是指针)...

  • c基础—指针运算和函数指针

    二级指针 数组和数组指针 采用指针遍历数组循环赋值 遍历 赋值 指针与数组的几种写法 函数指针(回调) 题目:监听...

网友评论

      本文标题:指针与数组

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