C语言:数组、字符串知识点整理:

数组:(长度的计算)

补充 :数组长度=sizeof(arr)/sizeof(arr[0])

注意:!!!不适用于当arr 充当形参时(函数传参)!!!

因为函数传递 的是int arr[0] 的地址(指针) ,而不是数组内容

若在此情况计算整形数组长度

在X86系统下,指针大小为4,所以计算结果为4/4=1;

在X64系统下,指针大小为8,所以计算结果为8/4=2;

函数内以此公式计算数组的长度均为错误答案,所以数组在传参时,应增加计算的数组长度值;

指针引用数组:

一维数组名表示整个数组:

在同一个函数定义的数组下 !!!

  1. sizeof(arr):表示数组的全部字节数
  2. &arr +1 : 表示数组本身加整个数组占字节数的地址

数组:int arr[10];

  1. **&**arr[0],表示下标为零的该数组地址
  2. [ ] 内数字表示数组的偏移量
  3. 而任意 **arr[]**仅代表数组的数值
  4. 数组名表示整个数组,表示地址

以下是几种指针和数组之间相互转换:

  • int *p=&arr[0] 将数组的起始地址赋给指针p
  • p++ == arr[i++];
  • (*p+i) == arr[0+i];
  • (*p+i) == p[i];
  • *(arr+3) == arr[0+3];
  • arr[i] == p[i];
  • arr\]i == \[p\]i;

  1. 当一个参数需要调用函数来修改值时:传指针解引用 但是数组 arr[i] 下标自带解引用 -> *(arr+i)= arr[i];所以数组在函数传参时无返回值也能修改值的变化

字符串常用函数

  • strcpy:字符串拷贝(复制)
  • strlen:字符长度,不包括'\0'
  • strcat:字符串连接
  • strcmp:字符串比较
  • strstr:字符串查找
  • sprintf:把数据输出到指定的字符数组 .非常常用
    • :printf("%d",a)
    • ->sprintf(char buff[10],"%d",a);
    • 把数据a作为字符输入字符串,
    • 凡是可以输出到屏幕上的数据,都可以通过sprintf()输入到字符串等其他保存,
  • gets:被废除,不允许使用,不安全
  • 不安全:数组越界
  • fgets(),从键盘获取指定数量的内容,保存到指定地址
相关推荐
码云数智-园园41 分钟前
微服务架构下的分布式事务:在一致性与可用性之间寻找平衡
开发语言
C++ 老炮儿的技术栈1 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
hz_zhangrl1 小时前
CCF-GESP 等级考试 2026年3月认证C++一级真题解析
开发语言·c++·gesp·gesp2026年3月·gespc++一级
Liu628881 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
IT猿手1 小时前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
AI科技星2 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
sunwenjian8862 小时前
Java进阶——IO 流
java·开发语言·python
波特率1152002 小时前
const关键字与函数的重载
开发语言·c++·函数重载
FL16238631292 小时前
[C#][winform]segment-anything分割万物部署onnx模型一键抠图演示
开发语言·c#
百锦再2 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven