c语言指针 字符 字符串

news2024/9/25 21:39:29

1、sizeof

某个类型或者某个变量在内存中占用字节数。

例如:sizeof(int)  ;      sizeof(i);都可以使用

2、运算符&

获取变量的地址。

int i;
scanf("%d",&i);

输入变量时,必须使用&运算符。

&操作符只能应用于变量,不能是常量和表达式。

定义一个数组int arr[5],数组的地址表示方式可以是:

arr,arr[0],&arr,三种方式都是正确的。

通过访问变量的地址,可以获取变量的值。

3、指针

指针就是保存地址的变量。

int main()
{	
  int i = 5;
  int* p = &i;
printf("%p",p);
}

p是一个指针,指向int型。p的值是i的地址,可以说p指向了i。

普通变量的值是实际值,指针变量的值是其它变量的地址。

输出指针p时,使用的是%p,格式控制符“%p”中的p是pointer(指针)的缩写。指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值。

#include <stdio.h>
void f(int* p);
int main()
{	
  int i = 5;
  int* p = &i;
  f(p);
}

void f(int* p){
	printf("%p",p);
}

 访问指针存储的地址所对应的值,用*操作符。

#include <stdio.h>
void f(int* p);
int main()
{	
  int i = 5;
  int* p = &i;
  f(p);
  //获取p存储的地址对应的值,即i的值
  int m = *p;
  printf("m = %d\n",m);
  //修改p存储的地址对应的值,即i的值
  *p = 10;
  printf("i = %d",i);
}
//打印地址
void f(int* p){
	printf("%p\n",p);
}

 4、字符类型

#include <stdio.h>
int main()
{	
  int i = 5;
  int c = '8';
  printf("i = %d\n",i);
  printf("c = %c\n",c);  //c以字符形式输出
  printf("c = %d\n",c);  //c以整数形式输出
}

从结果可以看出,在计算机中用56表示字符8,即‘8’。

每个字符在计算机中都有一个整数值表示。 

输入字符8,既可以输入int型56,也可以是char型8

#include <stdio.h>
int main()
{	
  char m;
  scanf("%c",&m);
  printf("m(整数) = %d\n",m);
  printf("m(字符) = %c\n",m);  //m以字符形式输出  
}

输入5是字符格式,所以输出 字符格式是5,输出整数格式是53,即字符5在计算机中是以53存储的。字符5的ascII码值是53。

#include <stdio.h>
int main()
{	
  if(53 == '5'){
  	printf("相等");
  }
}

 通过代码验证字符5和53确实相等。

所以字符有两种表现形式,一种是字符形式,一种是ascII码。

字母在ASCII码表中顺序排列。

'a'-'A'得到两段之间的距离。

字符+'a'-'A'   从大写转小写

字符-('a'-'A' ) 从小写转大写

转义字符:

字符数组:

char word[] = {'H','e','l','l','o','!'};  //这不是字符串,因为不能不能用字符串的方式计算。

这个word只是字符数组。不是字符串。

char word[] = {'H','e','l','l','o','!',‘\0’};  //这是字符串,因为添加了'\0'。

这个word是字符数组,也是字符串。

 字符串变量:

 数组和指针可以转换,所以有第一种形式。

第二和第三种形式,编译器会自动添加结束标记'\0',所以第二种形式,字符数组的长度是6,字符串的长度是5;第三种形式字符串长度是5,但占用6个字节的空间。结束标记占用一个字节,但不是字符串的长度。

字符串常量:

 字符串常量:

 字符串常量"hello,world!"存放在一个只读的地方,不能写入,所以不能修改。

#include <stdio.h>
int main()
{	
  int i = 5;
  char* p1 ="hello world!";
  char* p2 = "hello world!";
  
  printf("i的地址是:%p\n",&i);
  printf("p1的值是:%p\n",p1);
  printf("p2的值是:%p\n",p2);
}

 两个字符串常量内容相同,所以存在一个地方。

p1和p2两个指针存储的都是“hello world!"的地址,结果显示相同。所以并不是用两个空间存储两个相同的字符串。

 当添加了修改字符数组第一个元素的值,结果就不输出,因为常量无法修改。

 原理是:“hello world!"字符串常量是只读的,但存储在字符数组中需要将“hello world!"拷贝之后存储在字符数组中,所以可以在数组中修改。因为此时修改的是字符数组中的值,不是常量值。

 

添加字符数组p3,内容依然相同,打印3个相同字符串的地址: 

 发现p1和p2是相同的,而p3是不同的,p3和i的地址很接近,和p1,p2却相差很远。常量存在一个地方,不可以修改,变量存在一个地方,可以修改。i和p3是变量。

 字符串定义,何时用字符数组,何时用指针呢?

 char* 是字符数组?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习100天(二):002 数据预处理之导入数据集

机器学习 100 天,今天讲的是:数据预处理之导入数据集。 首先,我们打开 spyder。新建一个 load_data.py 脚本。 第一步,导入标准库 机器学习常用的标准库有 3 个: 第一个:numpy,用于数据处理。 第二个:matplotlib.pyplot,用于画图。 第三个:pandas,用于数值分析…

python 爬虫

前言 一、什么是爬虫 爬虫&#xff1a;&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在 FOAF 社区中间&#xff0c;更经常地称为网页追逐者&#xff09;&#xff1b;它是一种按照一定的规则&#xff0c;自动地从互联网上抓取对于我们有价值的网络信息的程序…

最强大的布局方案——网格Grid布局万字详解

Grid 布局又称网格布局&#xff0c;是W3C提出的一个二维布局系统&#xff0c;它与 Flex 布局有一定的相似性&#xff0c;都可以指定容器内部多个项目的位置。但它们也存在重大区别。Flex 布局是轴线布局&#xff0c;只能指定"项目"针对轴线的位置&#xff0c;可以看作…

jsp+ssm计算机毕业设计大学城二手书交易网站【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

绝对神器,今天教你如何识别图片上竖排的日语文字

在文字翻译或者其他的工作中我们经常遇到竖排的日语&#xff0c;有时候我们用普通的日语识别的软件根本无法完成 这个时候我们就需要一款可以识别竖排的日语工具&#xff0c;横排的我们很容易就能找到&#xff0c;但是竖排的就无能为力了 今天我们讲下如何识别竖排日语识别&a…

ZERO-SHOT:多聚焦融合

ZERO-SHOT MULTI-FOCUS IMAGE FUSION &#xff08;零镜头多焦点图像融合&#xff09; 多聚焦图像融合 (Multi-focus image fusion (MFIF)) 是消除成像过程中产生的离焦模糊的有效方法。The difficulties in focus level estimation and the lack of real training set for su…

计算机毕业设计springboot+vue文体用品商城网站

项目介绍 在当今社会的高速发展过程中,产生的劳动力越来越大,提高人们的生活水平和质量,尤其计算机科技的进步,数据和信息以人兴化为本的目的,给人们提供优质的服务,其中网上购买商品尤其突出,使我们的购物方式发生巨大的改变。而线上购物,不仅需要在硬件上为人们提供服务网上购…

ASPICE详细介绍-3.ASPICE有多少能力等级?

目录ASPICE有多少能力等级&#xff1f;9 个过程属性过程属性评定过程能力等级模型ASPICE有多少能力等级&#xff1f; ASPICE能力等级从0级到5级共分为6个层次&#xff0c;必须满足前一级别才可晋级下一个级别的评估。 【0级】Incomplete&#xff0c;未完成。 The process is…

【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法

可能一&#xff1a;PyCharm环境导入错误 配置的解释器&#xff0c;必须为所创建的虚拟环境下的python.exe文件&#xff0c;别的路径下的python.exe文件不好使&#xff01;&#xff01; 解决方法&#xff1a;根据【YOLOv7-环境搭建③】PyCharm安装和环境、解释器配置文中配置解…

微信小程序自定义头部导航nav

1.封装自定义nav导航组件 // app.js App({globalData: {systeminfo: false, //系统信息headerBtnPosi: false //头部菜单高度} })// components/nav/nav.js const app getApp(); Component({properties: {vTitle: { // 标题type: String,value: ""},isSearch: {…

大厂频频裁员,0基础转行做IT是不是已经晚了

现在转行做程序员是不是已经晚了 转行不会晚&#xff0c;晚的是你数不清的犹豫 对于二十来岁刚毕业或者毕业没几年的人来说&#xff0c;经历过社会的“摧残”&#xff0c;面对着一眼能够望到头的工作&#xff0c;拿着也不太高的工资&#xff0c;总是会去寻求一些改变与其每天…

Ajax请求原理与数据抓取

有些时候&#xff0c;我们直接通过网络请求库请求网页地址时&#xff0c;得到的响应结果可能跟浏览器中右键查看网页源码所看到的内容不一样。例如&#xff0c;在抓取&#xff1a;https://www.feeair.com/threeCode.html &#xff08;飞啊网&#xff09;这个网页时&#xff0c;…

公司固定资产管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;公告类型、公告信息、员工信息、仓库信息、资产类型、资产信息、供应商信 息、采购信息、盗产调拨…

(Matlab)基于蝙蝠算法实现电力系统经济调度

目录 摘要&#xff1a; 1.蝙蝠优化算法的基本原理&#xff1a; 2.蝙蝠优化算法的流程&#xff1a; 3.仿真实验分析&#xff1a; 摘要&#xff1a; 基于Matalb平台&#xff0c;构建基于蝙蝠活动行为的蝙蝠优化算法&#xff0c;对一个含有6个火电机组的电力系统进行优化调度…

毕业设计 ESP32在线墨水屏桌面摆件 -物联网 单片机 嵌入式

0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过…

单因子分析(如何判定一个因子是否有效)

本人之前都是做期权中性策略&#xff0c;第一次接触这个多因子策略&#xff0c;和一些大私募对接学习后&#xff0c;才知道这里面的水&#xff08;只能说各有各的道&#xff09;。 先说下&#xff0c;何为因子策略&#xff0c;就是一个因子和股票的价格在一定时间内是存在一定的…

【算法数据结构专题】「线程锁算法专项」初探CLH队列锁机制原理分析

技术扩展 SMP&#xff08;对称多处理器架构&#xff09; SMP(Symmetric Multi-Processor)&#xff0c;即对称多处理器结构&#xff0c;指服务器中多个CPU对称工作&#xff0c;每个CPU访问内存地址所需时间相同。其主要特征是共享&#xff0c;包含对CPU&#xff0c;内存&#…

使用Python互转pdf文档和word文档

1 前言 一日&#xff0c;欲将手头上的一份pdf文档转换成word文档。先试着用XX办公软件试了下&#xff0c;微信扫码登录后&#xff0c;在PDF转换界面&#xff0c;选中文档&#xff0c;点击“开始转换”&#xff0c;弹出提示对话框&#xff1a;免费的只给转换5页文档&#xff0c…

十万部冷知识:本届世界杯阿根廷会夺冠吗?

明天&#xff0c;世界杯的决赛“阿法大战”就开始了。而我个人是希望阿根廷夺冠的&#xff0c;熟悉我的人会知道&#xff0c;在2014巴西世界杯的64场比赛中&#xff0c;我曾预测对了63场&#xff0c;唯一一场不对的就是&#xff0c;那年阿根廷和德国的决赛&#xff0c;我当时就…

基于SSM村委会工作管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 工作人员&#xff1a; (1)通知管理&#xff1a;对日常的重要信息以及公告进行发布通知。 (2)财务管理&#xff1a;用于收…