乐闻世界logo
搜索文章和话题

C语言中指针和数组有哪些关键区别?

2月18日 17:11

指针和数组在C语言中有哪些关键区别?

核心区别:

  1. 内存分配

    • 数组在栈或静态存储区分配连续内存空间
    • 指针只是一个变量,存储地址信息,可指向任意内存位置
  2. sizeof 运算符

    c
    int arr[10]; int *ptr = arr; sizeof(arr); // 返回 40 (10 * sizeof(int)) sizeof(ptr); // 返回 8 (64位系统指针大小)
  3. 赋值操作

    • 数组名不能被赋值,是常量地址
    • 指针可以被重新赋值指向不同地址
  4. 运算符优先级

    • 数组下标 [] 优先级高于解引用 *
    • *ptr++ 先取值再递增指针
    • (*ptr)++ 递增指针指向的值
  5. 参数传递

    • 数组作为参数传递时退化为指针
    • 函数内无法获取数组实际大小

常见陷阱:

  • 混淆 &arrarr 的类型差异
  • 误用指针算术导致越界访问
  • 忘记数组名在表达式中退化为指针的特性
标签:C语言