当前位置: 首页 > article >正文

针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误

数组传参实际传递的是数组的起始地址,若在函数中改变数组内容,数组本身也会发生变化

#include<stdio.h>
void change_ch(char* str)
{
	str[0] = 'H';
}
int main()
{
	
	char ch[] = "hello";
	change_ch(ch);
	printf("%s\n", ch);
	return 0;
}

数组长度计算

数组总大小/每一个元素的大小=数组元素个数即数组长度
int main()
{
    int arr[]={1,2,3,4,5,6};
    int len = sizeof(arr)/sizeof(arr[0]);//数组总大小/每一个元素的大小=数组元素个数即数组长度
    printf("%d\n",len);
    return 0;
}

2.指针

指针变量加减法操作时,每次加一,增加的长度是其基类型的长度*1

#include<stdio.h>
int main()
{
	int i[] = { 1,2,3,4,5 };
	char ch[] = "hello";
	int* pInt = &i;
	char* pCh = &ch;
	printf("%d\n", *pInt);
	printf("*(pInt+1) == %d\n", *(pInt + 1));

	printf("%c\n", *pCh);
	printf("*(pCh+1) == %c\n", *(pCh + 1));
	return 0;
}

指针的另一种用法

#include<stdio.h>
int main()
{
	int i[] = { 1,2,3,4,5 };
	char ch[] = "hello";
	int* pInt = &i;
	char* pCh = &ch;
	printf("%d\n", pInt[0]);
	printf("%c\n", pCh[0]);
    return 0;
}

这种用法称为“数组指针”(array pointer)或“指针算术”(pointer arithmetic):

  1. pInt[0]:等同于 *(pInt + 0),实际上获取的是 i[0] 的值,即 1
  2. pCh[0]:同样等同于 *(pCh + 0),获取的是 ch[0] 的值,即字符 'h'

这利用了 C 语言中指针和数组的关系,允许通过数组下标语法来访问指针指向的内容。

3.引用(需要.cpp后缀了属于C++的知识,但是在考研数据结构中使用不算难,可以简化多级指针的使用)

引用其实就是起小名,还是同一个人,托管的地址一样(为了简化内存损耗,不是复制,而是直接找到内存进行引用

引用--->针对子函数改变主函数的普通变量问题

【注】引用传参--->直接使用而不是复制,因此改变会改变变量本身

引用--->针对子函数改变主函数一级指针的变量


http://www.kler.cn/news/329713.html

相关文章:

  • 如何批量转换大模型训练数据集格式
  • 使用容器启动的zk无法暴露3888问题解决
  • 创建Vue项目的时出现:无法加载文件 E:\software\node\node_global\vue.ps1,因为在此系统上禁止运行脚本
  • Android SQLite的基本使用、生成Excel文件保存到本地
  • 6.MySQL基本查询
  • 50. GLTF格式简介 (Web3D领域JPG)
  • 0708-指针和字符数组(上)(下)
  • 【不看会后悔系列】排序之——文件归并【史上最全详解】~
  • 数据结构之栈和队列——LeetCode:155. 最小栈,20. 有效的括号,1249. 移除无效的括号
  • Ktor快速上手1 - 第一个服务端项目
  • el-table表格点击该行任意位置时也勾选上其前面的复选框
  • OpenCV第十二章——人脸识别
  • 介绍篇| 爬虫工具介绍
  • 算法-汉诺塔问题(Hanoi tower)
  • Rust(1)基础语法
  • 【Python】探索自然语言处理的利器:THULAC 中文词法分析库详解
  • 【Redis】Redis中的 AOF(Append Only File)持久化机制
  • 【C++】set容器和map容器的基本使用
  • Acwing 容斥原理
  • Java try-catch结构异常处理机制与 IllegalArgumentException 详解
  • 基于YOLOv8的智能植物监测机器人
  • 探索机器人快换盘技术的未来之路:智能化与协作的革新
  • 解决 ERROR: PREPROCESSOR: MACROS TOO NESTED
  • Java工具--stream流
  • 【Linux】tar 压缩使用绝对路径时解压会出现多级文件夹
  • 显示adb报错,uniapp安装自定义基座
  • spring6启用Log4j2日志
  • MySQL高阶2066-账户余额
  • 本地部署开源在线PPT制作与演示应用PPTist并实现异地远程使用
  • 【python实操】python小程序之过七游戏以及单词单复数分类