首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【错误记录】C 语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 )

int main() { // 将下面的字符串翻转 char *str = "sdfsdfsdabc4548411abc"; // 计算字符串长度...// 记录 p_start 指针指向的首部字符 char c = *p_start; // 将尾部字符赋值给首部字符 *p_start = *p_end;...// 将首部字符赋值给尾部字符 *p_end = c; // 指向头部的指针自增 p_start++; // 指向尾部的指针自减...char *str = "sdfsdfsdabc4548411abc"; 字符串导致 , 该字符串存储在 全局区 的 常量区 ; char *str 指针指向了 常量区 ; 之后 , 通过指针尝试修改该常量区的字符串...char str[] = "sdfsdfsdabc4548411abc"; // 计算字符串长度 int len = strlen(str); // 指向字符串开始位置的指针

61410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言】初识C语言(常见的C语言概念)

    : #include 八.关键字介绍 C语⾔中有⼀批保留的名字的符号,⽐如:int 、if、return ,这些符号被称为保留字或者关键字,现在只需要混个眼熟和概念,后面会一一讲到。...----127的字符可以打印在屏幕上 十.字符串和\0 C语言中的字符串用双引号(“”)括起,如"abcdef",字符串的打印使用%s来指定,如: #include int main...() { printf("%s\n","hello,world"); return 0; } 其中,字符串末尾会隐藏一个\0,表示字符串在此处结束,在计算它的长度和打印时,遇到\0就结束,\...0不会计入长度,也不会打印出来,那字符串和字符的区别在哪里呢,请看演示: #include int main() { char arr1[] = { 'a','b','c' };...控制语句:控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句,后期再一一学习。

    13510

    C语言入门这一篇就够了(进阶篇)

    数组的概念 数组是一个有序的数据集合,它可以存储相同类型的元素,每个元素都可以通过索引访问。在C语言中,数组的索引从0开始,最后一个元素的索引为数组长度减1。...例如,下面的代码将打印数组中的第一个元素: printf("%d ", array[0]); 数组的常用操作 在C语言中,对数组可以进行一些常用的操作,如遍历、查找、排序等。...指针在C语言中的用法非常灵活,可以通过移动指针来访问和修改内存中的数据,也可以通过指针来传递参数给函数。...4.字符串操作:字符串本质上是字符数组,通过指针可以方便地对字符串进行操作。 5.回调函数:通过指针可以指向函数地址,实现回调函数的功能。...6.实现复杂的数据结构:如链表、二叉树等,通过指针可以方便地构建和操作这些数据结构。 总之,指针是C语言中非常重要的概念和工具,它可以提高程序的效率和灵活性,但同时也需要注意指针使用的安全性和正确性。

    27730

    工具丨用C语言扩展Python的功能

    2.3数据类型 Python定义了六种数据类型:整型、浮点型、字符串、元组、列表和字典,在使用C语言对Python进行功能扩展时,首先要了解如何在C和Python的数据类型间进行转化。...下面的例子给出了如何在C语言中使用Python的这三种数据类型: ?...下面的例子示范了如何在C语言中使用Python的元组类型: ? 2.3.3列表 Python语言中的列表是一个长度可变的数组,列表比元组更为灵活,使用列表可以对其存储的Python对象进行随机访问。...下面的例子示范了如何在C语言中使用Python的列表类型: ? 2.3.4字典 Python语言中的字典是一个根据关键字进行访问的数据类型。...下面的例子示范了如何在C语言中使用Python的字典类型: ?

    2.9K90

    详解CC++输入输出

    - n:读取字符的最大数量(包括终止符'\0'),通常为缓冲区的长度。 - stream:文件流指针,指定从哪个文件流读取字符串。...cin.get函数可以和其他输入函数(如cin或getline)配合使用,以实现更复杂的输入操作。例如,可以使用cin.get函数读取一个完整的字符串,然后使用其他函数处理该字符串。...如果读取的字符串的长度超过了最大长度,超出部分的字符将被丢弃。...<< endl; 在这个例子中,程序将从输入流中读取一个最大长度为19的字符串,并将其存储到名为name的字符数组中。然后,程序会输出一个问候语,其中包括这个读取到的字符串。...%s:输出一个字符串。 %c:输出一个字符。 %p:输出一个指针地址。 %x:输出一个无符号十六进制整数。

    24210

    初始C语言(下)

    八.关键字介绍 C语言中的有着一批保留着名字的符号,比如:if,int,return,这些都被称之为关键字。关键字有些重要的性质要了解到: 1.关键字都有特殊的意义,是保留给C语⾔使⽤的 。...九.字符和ASCII编码 字符,顾名思义,我们的键盘上就有很多的字符,比如a,b,c,d,e,f等等,在c语言中,字符常用单引号引入,比如'a','b','c'等等,记住单引号里面只能有一个字母,...从这里可以看出最后的81正是代表了Q的ASCLL值,所以通过ASCLL也可以打印出,对了,其中的%c代表着字符,这是占位符后期会说的现在先了解着就可以....就是这么个情况,可以打印出字符串来,这便是字符串,下面我来说一下\0是啥: 首先要先明白字符串是有一个隐藏的结尾\0的,它代表着字符串的结束,也就是说一道\0这个就会打印自动结束,所以在数字符串的长度的时候最后一点要记住要数上这个...⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句 可以分为一下三类: 1.

    6010

    go语言基本类型

    如: 复制代码 代码如下: func test1() { str1 := “Go语言的字符串是用UTF-8编码的变宽字符序列,每个字符都用一个或多个字节表示。”...� 言的字� 232 Go语 109 41 (3)字符串支持常规的比较运算符操作,比较运算符在内存中一个字节一个字节的比较字符串。...如: 复制代码 代码如下: func test1() { str1 := “Go语言的字符串是用UTF-8编码的变宽字符序列,每个字符都用一个或多个字节表示。”...for _, char := range []rune(str1) { fmt.Println(char) } } 这个操作会将str1的每个字符数字直接打印出来 四、指针 (1)指针的本质..., c, d) } 输出为: {1 2} &{0 0} &{0 0} &{3 4} Go语言打印指向结构体的指针时,会打印解引用后的结构体内容,同时会将&作为前缀,表示它是一个指针。

    87360

    C语言库函数的模拟实现(部分)

    C语言中有非常多的库函数,它们为我们的代码创作提供了许多便利。今天就由我来为大家分享几个库函数的模拟实现过程。...我们先来看一串代码 方式1:计数器 方式2:递归思想 方式3:指针-指针 strcpy函数 源字符串必须以 '\0' 结束。 • 会将源字符串中的 '\0' 拷⻉到⽬标空间。...• strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标 记。 • 如果字符串中不存在更多的标记,则返回 NULL 指针。...在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语⾔程序启动的时候就会使⽤⼀个全局的变量errno来记录程序的当前错误码,只不过程序启动 的时候...perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。 是的,这两个打印出来的结果是一致的。 讲到这,不知你是否对这些函数有了新的理解?欢迎在评论区与我交流!

    9210

    GO语言基本类型分析

    如: 复制代码代码如下: func test1() { str1 := "Go语言的字符串是用UTF-8编码的变宽字符序列,每个字符都用一个或多个字节表示。"...� 言的字� 232 Go语 109 41 (3)字符串支持常规的比较运算符操作,比较运算符在内存中一个字节一个字节的比较字符串。...(4)上例的最后一个取字符数的操作:len([]rune(str1)),在Go语言中,一个字符串可以可以用一个rune(又名int32)数组来表示,每个rune都表示一个单一的字符。...for _, char := range []rune(str1) { fmt.Println(char) } } 这个操作会将str1的每个字符数字直接打印出来 四、指针 (1...(a, b, c, d) } 输出为: {1 2} &{0 0} &{0 0} &{3 4} Go语言打印指向结构体的指针时,会打印解引用后的结构体内容,同时会将&作为前缀,表示它是一个指针。

    83350

    【C语言】一维数组(含数组二分查找)

    [10] = {1,2,3,4,5,6,7,8,9,10}; 它的下标如图: (2)[]操作符:     在C语⾔中数组的访问提供了⼀个操作符 [] ,这个操作符叫:下标引⽤操作符。...标准之前,C语⾔在创建数组的时候,数组⼤⼩的指定只能使⽤常量、常量表达式,或者如果我们初始化数据的话,可以省略数组⼤⼩,如: int arr[]={1,2,3,3};//编译器自动识别出元素个数为4    ...数组的⼤⼩⼀旦确定就不能再变化了     遗憾的是在VS2022上,虽然⽀持⼤部分C99的语法,但是默认没有⽀持C99中的变⻓数组,没法测,后面会专门写博客教大家如何在VS2022上使用变长数组,现在了解一下就可以了...分析: (1)我们可以创建两个数组,一个数组存放字符串“hello fanfan”,一个数组存放对应的* 号,如“************”,创建代码为: char arr1[] = "hello fanfan...最左边和最右边的字符替换 *数组最左边和最右边的字符,我们设最左边下标为left,右下标为right,访问最左边的字符可以用0下标表示,访问最右边的字符可以用元素长度减1的下标表示,如: int left

    9910

    Redis剖析——Redis字符串的设计与实现

    本章分析Redis如何在内存中保存这些字符串。...提示:type、encoding、lru使用了C语言中的位段定义,这3个属性使用同一个unsigned int的不同bit位。这样可以最大限度地节省内存。...sds 我们知道,C语言中将空字符结尾的字符数组作为字符串,而Redis对此做了扩展,定义了字符串类型sds(Simple Dynamic String)。...s_realloc与C语言realloc函数的作用相同,负责为给定指针重新分配给定大小的内存空间。它会尝试在给定指针原地址空间上重新分配,如原地址空间无法满足要求,则分配新内存空间并复制内容。...在C语言中,long long占用8字节,取值范围是-9223372036854775808~9223372036854775807,因此最多能保存长度为19的字符串转换后的数值,加上负数的符号位,一共

    81620

    C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

    C的包,这里的import “C”类似于告诉Cgo将之前注释块中的C代码生成一段具有包装性质的Go代码 3、访问C语言中的函数需要在前面加上C.前缀,如C.Cstring C.go_print C.free...4、对于C语中的原生类型,Cgo都有对应的Go语言中的类型 如go代码中C.int,C.char对应于c语言中的int,signed char,而C语言中void*指针在Go语言中用特殊的unsafe.Pointer...(cs)来对应 而Go语言中的string类型,在C语言中用字符数组来表示,二者的转换需要通过go提供的一系列函数来完成: C.Cstring      : 转换go的字符串为C字符串,C中的字符串是使用...malloc分配的,所以需要调用C.free来释放内存 C.Gostring    :  转换C字符串为go字符串 C.GoStringN : 转换一定长度的C字符串为go字符串 需要注意的是每次转换都会导致一次内存复制...GoString 定义为typedef struct { const char *p; GoInt n; } GoString; p为字符串指针,n为长度;所以这里通过GoString value =

    4.4K100

    02.GO变量和数据类型(幼儿园级别教程 )

    如果想打印出变量的类型使用%T 如果想查看数值对应的unicode符号则使用%c 查看字符串占用的字节使用unsafe.sizeof(num1)打印出字节,rune类型的就会打印出4,注意要导入包import...底层都是存储的unicode码值,存储的时候使用整数,打印的时候可以使用%c查看对应字符 实战操作:可以看到对应的数值通过%c打印出来就是字符,字符类型通过打印可以得到字符。...UTF-8和GBK是两种常见的Unicode编码方式,UTF8存储方式使用变长编码就是说1-4个字节根据长度自动变化,而gbk使用固定长度2个字节,适配中文环境。...0xc00000a0c8 // 使用指针打印出值: 22 // ptr指针的地址: 0xc00006c020 // ptr1指针的地址: 0xc00006c028 其他知识 (1)可以通过指针进行赋值,...Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int、*int64、*string等。

    26310

    数据类型和表达式

    平台相关 0 保存指针地址的整数值 需要注意的是,Go语言中支持隐式类型转换,但是不同类型之间的转换需要满足特定的规则。...还可以使用 make 函数来创建指定长度和容量的切片: numbers := make([]int, 5, 10) 该语句创建了一个长度为 5,容量为 10 的整数类型切片。...我们通过 & 运算符获取变量 x 的地址,并将其赋值给指针变量 p1。然后我们使用 * 运算符访问指针所指向的变量的值,并打印出来。 接着我们演示了如何使用 new 函数创建指针对象。...我们使用 new 函数创建了一个新的整数类型变量,并将其地址赋值给指针变量 p2。然后我们使用 * 运算符访问指针所指向的变量的值,并打印出来。 最后,我们演示了如何在函数中使用指针参数。...最后我们打印出变量 y 的值,可以看到它已经被成功地增加了 1。

    16410

    c语言从入门到实战——在系统学习C语言之前所需要了解的知识

    此外,C语言还提供了指针的概念,这是其他许多编程语言所不具备的。指针是一个变量,其值为另一个变量的地址,通过指针可以间接访问和操作内存中的数据。...argv:参数数组本身,指向字符串的指针数组,表示存放参数的具体内容....字符和ASCII编码 在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:‘a’,‘b’,‘@’。...字符串和\0 C语言中如何表示字符串呢?使用双引号括起来的一串字符就被称为字符串,如:“abcdef”,就是⼀个字符串。...所以我们在使用库函数 printf() 打印字符串或者strlen() 计算字符串长度的时候,遇到 \0 的时候就自动停止了。

    16510

    【重拾C语言】七、指针(三)指针与字符串(字符串与字符串数组;指针与字符串的遍历、拷贝、比较;反转字符串)

    在C语言中,字符串以null字符('\0')结尾,表示字符串的结束。字符串可以通过字符数组或指针来表示和操作。...使用指针来遍历字符串中的字符; 使用指针进行字符串的拷贝、连接和比较等操作; 指针还可以用于动态分配内存以存储字符串,这样可以根据需要调整字符串的长度。...spm=1001.2014.3001.5501 7.5 指针与字符串 7.5.1 字符串与字符串数组 a. 字符串 C语言中没有特定的字符串类型,通常是将字符串放在一个字符数组中。...每个字符串可以具有不同的长度(数组的每个元素都需要足够大,以容纳对应的字符串及其结束标志)。 注意:字符串数组中的每个字符串都以空字符结尾。在使用字符串数组时,需要注意字符串的结束位置。...然后打印出反转后的字符串。 关于指针作参数,详见后文:九、再论函数

    18610

    qt学习笔记(二) QString

    之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。...每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。...C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString。QString以16位Uniode进行编码。...另外,与C风格的字符串不同,QString中间是可以包含'\0'符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到'\0'的长度。... = "User: ";   str.append(userName);   str.append("\n");  C语言中有printf()函数作为格式化输出,QString则提供了一个sprintf

    1.8K10

    C语言中sprintf()函数的用法

    sprintf函数打印到字符串中(要注意字符串的长度要足够容纳打印的内容,否则会出现内存溢出),而printf函数打印输出到屏幕上。...sprintf(str, “%0*x”, 2 * sizeof(void *), &i); 9、sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用在调用strlen(str)求字符串的长度...,并不指向所处,可以指向一个变量,然后可以用,如果要单纯用这个指针,那么要给这个指针malloc分配一片内存,加了malloc就要加stdlib.h 11、设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时...,最后打印出来buffer的内容和字符串中字符的个数。...结果如图所示: 12、 格式化数字字符串 sprintf最常见的应用之一莫过于把整数打印到字符串中。如: (1)把整数123打印成一个字符串保存在s中。

    4.3K20

    【C语言】指针运算与数组关系:详细分析与实例讲解

    指针的实际应用:模拟 strlen 函数 2.1 使用指针模拟字符串长度计算 在C语言中,我们通常使用strlen函数来获取字符串的长度,但我们也可以通过指针运算来模拟这一过程。...= '')遍历字符串,直到遇到``字符。 最终,return str - start;返回指针str与start之间的差值,这实际上是字符串的长度。...小结 指针在C语言中是一个强大的工具,尤其在处理数组和字符串时,它能够提高代码的效率和灵活性。通过指针运算,我们可以高效地进行数组遍历、计算字符串长度等常见任务。...本文通过逐步解析指针加减运算、指针与指针的关系、以及指针在实际编程中的应用(如模拟strlen函数)来帮助读者更好地理解指针在C语言中的使用方法。...这些是任何程序的构建模块,也是深入学习其他高级特性(如指针和内存管理)的基础。 其次,学习指针是C语言中的关键环节。指针是C语言强大功能的核心,它直接与内存操作相关。

    9710
    领券