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

C基础(学习)2024.7.23

    Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换相关知识可以查看文档http://t.csdnimg.cn/CmqhC

        数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2

        运算符和输表达式,输入输出相关知识可以查看文档http://t.csdnimg.cn/FJe89

        控制语句,if-else,switch-case,for,while,do-while,循环控制语句相关知识可以产看文档http://t.csdnimg.cn/zskY3

        一维数组,字符数组相关知识可以查看文档http://t.csdnimg.cn/1weqY

        排序(冒泡排序和选择排序),二维数组相关知识可以查看文档http://t.csdnimg.cn/hvo5C

目录

指针

概念

格式

指针操作符

初始化和赋值

1.普通变量的地址赋值给指针变量

2.数组首地址赋值给指针变量

3.将指针变量里卖弄保存的地址赋值给另一个指针变量

指针运算

1.算术运算:+ -

(1)对指针加减操作其实是让指针向前或向后移动

(2)指针偏移字节

2.关系运算:< > == !=

指针的大小

指针

概念

        地址:内存中每个字节单位都有一个编号(一般用十六进制表示)

        指针:指针就是地址

        指针变量:用于存放地址的变量

格式

        存储类型 数据类型 * 指针变量名;

        数据类型: 代表指针所指空间存放的数据的数据类型

        例如:int a=10;

                   int *p=&a;

        访问指针所指空间的内容时用取内容运算符*

指针操作符

        &:取地址,取变量的地址

        *:取内容,取地址里面的内容

        *&a = a;           //*和&是互逆运算(抵消)

        &*a;         //错误 (原因:运算符优先级)

初始化和赋值

        指针变量在使用前不仅要定义还要初始化,未初始化的指针变量不能随便使用,不然会产生野指针。

1.普通变量的地址赋值给指针变量

int a=5;

int *p=&a;

2.数组首地址赋值给指针变量

char s[]="hello";

char *p=s;

3.将指针变量里卖弄保存的地址赋值给另一个指针变量

int a=10;

int *p=&a;

*q=p;

指针运算

1.算术运算:+ -

(1)对指针加减操作其实是让指针向前或向后移动

        p+n:  访问高地址方向的第n个数据的地址,指针指向不改变。

        p-n: 访问低地址方向的第n个数据的地址,指针指向不改变。

(2)指针偏移字节

        偏移字节数=偏移量*数据类型大小

        两个地址之间的差= 两个地址之间相隔元素的个数

        p-q = 直接按相隔元素个数

2.关系运算:< > == !=

        指针之间关系运算比较的是它指向地址的高低

        指向高地址的指针大于指向低地址的指针

        注意:指向不同类型的数组指针关系运算没有意义,指向不同区域的指针关系运算也没有意义,需要同一个数组间进行比较

例题:利用指针判断输入的字符串是否为回文数

#include <stdio.h>
#include <string.h>
int main()
{char s[100];gets(s);int len = strlen(s);char *p = s;int flag = 0;for (int i = 0; i < len; i++){if (*(p + i) != *(p + len - i - 1)){printf("不是回文数\n");flag++;break;}}if (flag == 0){printf("是回文数\n");}return 0;
}

指针的大小

计算指针变量大小:siezof(指针变量名);

总结:

        1.  32位操作系统,指针大小4字节,64位操作系统,指针大小8字节

        2.内存地址是固定的,但是变量的地址不固定的(栈区变量随机分配)

        3.指针类型根据指针指向空间的数据类型

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JDBC操作MySQL数据
  • 通天星CMSV6车载视频监控平台disable接口处存在SQL注入漏洞 [附POC]
  • 如何保护你的网络安全?
  • K3s部署及研究
  • Ubuntu24.04 NFS 服务配置
  • React前端面试每日一试 2.JSX是什么?JSX如何工作?
  • 新版GPT-4omini上线!快!真TM快!
  • mac 如何给默认终端(zsh)装插件,使得更美观易用
  • git-常用基础指令
  • Docker中安装的postgresql14在启用vector扩展的时候,找不到该扩展的控制文件。
  • 社交圈子聊天交友系统搭建社交app开发:陌生交友发布动态圈子单聊打招呼群聊app介绍
  • 虚拟局域网配置与分析-VLAN
  • go-kratos 学习笔记(4) 服务注册与发现 nacos注册
  • 以进程完成并发的UDP服务端
  • python中的fire和Linux shell中的参数传递
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • iOS 系统授权开发
  • JavaScript 基础知识 - 入门篇(一)
  • jquery cookie
  • js数组之filter
  • Material Design
  • 创建一个Struts2项目maven 方式
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用quicker-worker.js轻松跑一个大数据遍历
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • ​一些不规范的GTID使用场景
  • #include<初见C语言之指针(5)>
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (java)关于Thread的挂起和恢复
  • (LeetCode) T14. Longest Common Prefix
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (pycharm)安装python库函数Matplotlib步骤
  • (ZT)薛涌:谈贫说富
  • (六)Flink 窗口计算
  • (一)WLAN定义和基本架构转
  • (转)【Hibernate总结系列】使用举例
  • *p++,*(p++),*++p,(*p)++区别?
  • . NET自动找可写目录
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .dwp和.webpart的区别
  • .Net 6.0 处理跨域的方式
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET性能优化(文摘)
  • .Net中wcf服务生成及调用
  • .net中应用SQL缓存(实例使用)
  • .py文件应该怎样打开?
  • :O)修改linux硬件时间
  • @Autowired标签与 @Resource标签 的区别
  • [2016.7.Test1] T1 三进制异或
  • [Android]创建TabBar