c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟

字符串的两种定义方式

char数组

char sa[] = “hello world”;

char指针

char *sp = “hello world”;

这两种方式都产生了一个”hello world”的字符串常量,字符串常量存储在静态存储区中,静态存储区中的内容在程序运行的整个过程中都存在,而且只存储一份。

数组与指针的关系

在第一种定义中,字符串常量在编译时就已经分配好了空间,但直到运行时才会为数组分配存储空间,这时,存储在静态存储区中的字符串常量会被拷贝一份到数组中,此后,数组名sa与&sa[0]等价。重要的是,sa是一个常量,你不能修改sa的值,你可以通过sa+1来标识数组里的下一个元素,也可以修改数组里的元素。然而,sa++是不允许的,因为自增运算符只能作用于变量而不是常量。

第二种定义中,程序运行时只为指针变量sp分配了存储空间,用来字符串常量”hello world”的地址,这时,字符串常量没有被拷贝。sp的值是可以改变的,如++sp将指向字符e。

总之,数组初始化是从静态存储区中把一个字符串拷贝给数组,而指针初始化只是复制这个字符串的地址。

示例

#include

int main(int args, char **argv) {

char sa[] = "hello world";

char *sp = "hello world";

// sa++; 错误,sa是常量

sp++;

sa[1] = 'M';

*(sa+2) = 'X';

// sp[1] = 'M'; // 错误,不能修改常量值

printf("%s\n", sa);

}

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

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

相关文章

python计算两字符串中的位置_python – 计算两个字符串之间距离的算法

是否有任何字符串距离算法没有考虑到单词的顺序?以下算法未提供所需结果(在该示例中,所需结果应为1):import jarojaro.jaro_winkler_metric(uMichael Jordan,uJordan Michael)>>>0.47import LevenshteinLevenshtein.ratio(Michael Jordan,Jorda…

php unset函数_PHP | 使用unset()函数从数组中删除元素

php unset函数Given an array and we have to remove an element from the array. 给定一个数组,我们必须从数组中删除一个元素。 unset()函数 (unset() function) To remove an element from an array, we can use a PHP library unset() function, it accepts th…

vi显示行号

vi显示行号 :set nu 带行号查看,并不改变文件内容:set nonu 取消带行号查看在每个用户的主目录下,都有一个 vi 的配置文件".vimrc"或".exrc"用户可以编辑它,使这些设置在每次启动 vi 时,都有效.例如,加入如下设置行:set nu 显示行号…

对象过滤某个属性 循环 php_37道PHP面试题(附答案)

1、什么事面向对象?主要特征是什么?面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。2、SESSION 与 COOKIE的区别是什么,请从协议,产生的…

项响琴C语言书籍在线浏览,电子琴 c语言程序

实用#include unsigned char code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab[]{64021,64103,64260,…

Java File类boolean createNewFile()方法(带示例)

文件类布尔型createNewFile() (File Class boolean createNewFile()) This method is available in package java.io.File.createNewFile(). 软件包java.io.File.createNewFile()中提供了此方法。 This method is used to create a new file by using createNewFile() method a…

oracle   SQL执行过程

1.sql执行过程1>解析(判断对象是否存在,是否有权限查询,语义解析,检查缓存中是否有相同的SQL等等)2>优化(CBO确定优化模式,确定访问路径,联接顺序,过程中通过很多综…

vue-video-player修改src就会报错_4、修改入口点代码

在riscv上电时,会进行CPU自检,然后跳转到bootloader处执行。bootloader设置好kernel的运行环境后,从硬盘加载kernel到内存,最后再跳转到kernel入口地址。我们采用的bootloader为OpenSBI,被加载到0x80000000地址&#x…

数码管超声波c语言黑51,51单片机开发板-超声波测距-数码管显示

《51单片机开发板-超声波测距-数码管显示》由会员分享,可在线阅读,更多相关《51单片机开发板-超声波测距-数码管显示(16页珍藏版)》请在人人文库网上搜索。1、计算机技术系项目工作报告课程名称单片机开发板设计与制作实训班级学号姓名项目名称超声波测距…

java 方法 示例_Java ArrayDeque带有示例的removeFirstOccurrence()方法

java 方法 示例ArrayDeque类removeFirstOccurrence()方法 (ArrayDeque Class removeFirstOccurrence() method) removeFirstOccurrence() method is available in java.lang package. removeFirstOccurrence()方法在java.lang包中可用。 removeFirstOccurrence() method is use…

社交应用动态九宫格图片的规则

这里主要以微信和QQ空间为作为研究对象,得到的结论如下。 QQ空间里的动态 iOS设备,以iPhone6为分界 iPhone6及以上分辨率的设备: 当宽且高同时 > 512px时,判断 宽/高的比例值:大于 2时,以高度为基准&…

c语言实现链表结构6,用c语言实现的链表结构--数据结构实验

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include"stdio.h"//使用new指针来将临时变量重新初始化#include"stdio.h"typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;void InitList(LinkList &L)//…

splunk中 如何隐藏input_翻糖制作中,如何避免裂缝,如何隐藏裂缝,如何防粘?...

翻糖蛋糕 因精致的样子和栩栩如生的各种造型深得人们的喜爱,它不仅满足了人们对蛋糕口味及装饰日益多样化的需求,同时也在动手制作的过程中,享受到美食与生活的无穷乐趣。不过裂缝,不平整,干燥对翻糖作品来说无疑是噩梦…

Java DataInputStream readUnsignedByte()方法(带示例)

DataInputStream类readUnsignedByte()方法 (DataInputStream Class readUnsignedByte() method) readUnsignedByte() method is available in java.io package. readUnsignedByte()方法在java.io包中可用。 readUnsignedByte() method is used to read 1 byte (i.e. 8 bit) of …

wpf中groupbox有什么用_展示设计中的标摊是什么 用的什么材料

经常听从事展示设计的工作人员说起标摊,那什么是标摊呢?顾名思义,标摊就是通用标准的国际展会摊位的缩写。但是不少人看到干巴巴的词语还是不能理解。那么这篇文章从用途、材料等方面来详细介绍标摊究竟是什么。 标摊的主要材质是什么一般来说…

Java BigInteger类| nextProbablePrime()方法与示例

BigInteger类nextProbablePrime()方法 (BigInteger Class nextProbablePrime() method) nextProbablePrime() method is available in java.math package. nextProbablePrime()方法在java.math包中可用。 nextProbablePrime() method is used to get the next probable prime n…

SQL 行转列的两种做法

if object_id(tb)is not null drop table tbGocreate table tb(姓名 varchar(10),课程 varchar(10),分数 int)insert into tb values(张三,语文,74)insert into tb values(张三,数学,83)insert into tb values(张三,物理,93)insert into tb values(李四,语文,74)insert into tb…

android一个工程的xml怎么引用另外一个工程的xml,如何在Android中使用XML引用库中另一个包的字符串?...

Androiddocumentation告诉我,我可以使用“包名”访问另一个包中的字符串,无论这意味着什么:[:]/所以在我的清单中,我想访问一个字符串,我已将其放在一个单独的库项目中,在com.globalmentor.android包中 – 毕竟我的R类就是这样:android:label"com.g…

kotlin 类和对象_Kotlin程序| 类和对象的示例(带有学生数据)

kotlin 类和对象In the below program, we are creating a student class to input and print the student data like name, age. It is a simple example of creating class in Kotlin. 在下面的程序中,我们将创建一个学生班级,以输入和打印学生数据&am…

python 复数数组_python的数组运算及推导式的运用

运行方式:缩进 TAb(四格)或者space(1格)注释:#可以在程序后注释文字 或者 ... ,""" ... """ 可以多行注释 中间全为注释数值输出 print(...)图形输出 import matplotlib as pltplt.show()列表 list[] #字符串…