C语言_第一轮笔记_指针

本文详细介绍了C语言中的指针概念,包括地址与指针的定义,不同类型指针的运算,以及指针在函数参数传递、数组操作和字符串处理中的应用。涉及冒泡排序示例和常用字符串处理函数如strcpy、strcat等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.1 密码开锁

  • 地址和指针
    • 一般以变量所在的内存单元的第一个字节的地址作为他的地址
    • NULL的值为0,代表空指针
  • 指针变量的定义
    • 类型名 *指针变量名
    • 类型名指定指针变量所指向变量的类型
    • 指针声明符*在定义指针变量时被使用,说明被定义的那个变量是指针
    • 指针变量要先赋值再使用
p = &i;
p = 0;
p = NULL; // 空指针不指向任何单元
p = (int *)1732;
  • 指针的基本运算
    • 相同类型的指针能进行复制、比较和算数运算

8.2 角色互换

  • 指针作为函数的参数
    • 在实参和形参之间的数据传递是单向的值传递方式,调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指向的变量的值
    • 只要在函数中改变*p的值,就改变了该存储单元的内容

冒泡排序

数组一旦被定义后内存空间就会被分配,也就是说数组名所代表的地址是不能改变的

  • 指针、数组和地址间的关系
    • 数组的基地址是在内存中存储数组的起始位置,他是数组中第一个元素的地址,因此数组名本身是一个地址及指针值
    • 指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址,可以把它看作是指针常量
    • 不能改变指针常量a的值
    • 指针每一次加一减一,是加上或减去该指针所指向的那个变量数据类型的长度,即它所指向的存储单元所占用的字节数
    • 数组名可以使用指针形式,而指针变量也可以转换为数组形式
    • 指针相减表示他们两个之间数组元素的个数
p = a;
sum = 0;
for (i = 0; i < 100; i++)
{
	sum += p[i];
}
  • 数组名作为函数的参数
    • 当进行参数传递时,主函数传递的是数组a的基地址,数组元素本身不被复制

字符串压缩

  • 字符串和字符指针
    • 字符串常量是用一对双括号括起来的字符序列,通常被看作一个特殊的一维字符数组
    • 系统在存储一个字符串是先给定一个起始地址,连续存放该字符串中的字符
      在这里插入图片描述
      在这里插入图片描述
  • 常用的字符串处理函数
    • 字符串的输入输出
      • scanf
      • printf
      • gets
      • puts
  • 字符串的复制,连接和比较及其计算字符串长度的函数
    • 字符串复制函数char *strcpy(char *s1, char *s2,把字符串s2复制到s1。

    • 字符串连接函数strcat(s1, s2)s2接到s1后面

    • 字符串比较函数strcmp(s1, s2)在这里插入图片描述
      在这里插入图片描述

    • 字符串长度函数strlen(s1)
      在这里插入图片描述

  • 在应用标准库中的任何函数前,必须要提供函数原型#include <string.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值