美文网首页
数组与指针

数组与指针

作者: juriau | 来源:发表于2020-03-02 23:53 被阅读0次

数组声明:int arr[] = {1, 2, 3, 4, 5};

指向数组的指针

指针可以指向数组,而且可以使用对指针的算术运算来代替数组的索引访问数组元素。
如:int *p; p = &arr[0];

此外,数组名其实就是指向数组第一个元素的指针,我们可以直接用数组名给指针赋值。
如:int *p = arr;

由此我们可以得到访问数组元素的方式:arr[i]、*(arr+i)、p[i]、*(p+i)

数组名与指针

数组名是指向数组中第一个元素的指针常量,不是指针变量,不能给数组名赋值或进行运算操作。

比如,我们用对数组名和指向数组的指针分别使用sizeof(),立刻就能看到差别。

int arr[] = {1, 2, 3, 4, 5};
int *p = arr;
printf("arr's size = %lu\n", sizeof(arr));
printf("p's size = %lu\n", sizeof(p));

结果:

arr's size = 20
p's size = 8
Program ended with exit code: 0
函数参数

指向数组的指针*a和数组名a[]作为形式参数是等价的,都是指针,都可以进行赋值和运算。

比如:我们用对它们分别使用sizeof(),我们发现它们此刻都是指针变量。

void func(int *p){
    printf("%lu\n", sizeof(p));
}

void func2(int arr[]){
    printf("arr's size = %lu\n", sizeof(arr));
}

我们得到结果

p's size = 8
arr's size = 8
Program ended with exit code: 0
函数返回值

我们来看下面两个例子:

char *study(void)
{
    char aa[20] = "I Want go home";
    return aa;
}

char *study2(void)
{
    char *aa = (char *)malloc(30*sizeof(char));
    strcpy(aa, "I Want go home");
    return aa;
}

第一个会出现错误,而第二个没问题。

第一个的错误在于,在函数内部创建一个数组,数组创建在内存的栈区域,函数完成后就会删除,这时候返回数组名 / 返回数组地址会出现错误,因为数组已经删除。

而第二个用malloc动态分配内存创建数组,数组会创建在内存的堆区域,所以没有问题

相关文章

  • 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/yqzgkhtx.html