当前位置:首页 > 技术文章 > 正文内容

C语言指针,如何操作字符串?linux C第45讲

1 指针操作字符串

在学习数组的时候,我们了解了字符串的定义,我们可以定义一个字符数组,用来存放一个字符串,例如:

char array[] = {"abcde"};

char buf[]={"韦凯峰 Linux C/C++ 零基础编程教程!\n"};

char buf1[]={"Linux系统编程\nOpenwrt系统开发\n\n"};

char tmp[]={"xxx\n"};

那么,学习了指针,我们可以定义一个char类型的字符指针变量,字符指针变量存放字符串的地址,那么,字符指针变量指向字符的地址。例如:

可以看到,定义了字符指针变量pstr,并且把 array[] 数组的首地址赋给该指针变量,然后,输出pstr指针变量指向的字符串。

也可以把一个字符串常量,赋给字符串指针。程序测试代码如下:

可以看到,我们定义了char类型的指针变量,然后,可以直接把字符串常量赋给字符指针变量。那么,字符指针变量就存放字符串常量的首地址。

所以,可以输出字符指针变量指向的字符串常量。

2 字符串常量操作异常

在定义字符串的时候,有如下的形式:

char array[] = "abcde";

定义了字符数组array[ ],存放字符串数据。如下的形式,是定义一个指针,直接指向一个字符串:

char* p1 = "www123"; //把字符串常量赋给指针变量p1

定义字符串指针p1,指向字符串常量。

那么,array[ ]字符数组中存放的数据是普通的字符数据,可以修改。但是,字符指针p1指向的地址,是存放“字符串常量”,是不允许修改。

程序测试例子如下:

程序运行结果如下:

可以看到,执行 array[3] = 'A' 是正确的操作。但是,执行 p1[3] = 'A'的时候,就提示了Segmentation fault错误,是内存段错误。

因为,字符串指针p1指向的是字符串常量,字符串常量中的字符是常量,不可以被修改。

相关文章

Linux scp远程复制命令使用整理(linux远程copy)

快捷复制首先,别那么多废话,快告诉我怎么用,让我直接复制!OK,安排!复制本地文件/目录 ==> 远程机器scp /opt/soft/test.tar.gz root@192.168.1.102...

如何用CHAT配置linux的远程连接?(linux 远程cp)

问CHAT:配置linux的远程连接 1.下载ssh 2.启动ssh服务 3.查看ssh服务状态 4.设置ssh服务开机自启动 5.设置windows的cmd下ssh 6.通过cmd的ssh命令远程到...

Linux常用查找文件方法总结(linux查找文件命令有哪些)

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;检索范围:PATH环境变量里面...

Linux系统信息查看命令总结(linux系统信息查询)

概述当线上系统出现问题的时候,我们经常需要快速的获取系统信息、检查系统运行状态来方便定位问题,系统信息包括系统版本、内核等,运行状态包括内存是否被耗尽,磁盘是否还有剩余空间,网络带宽是否够用等等,总结...

如何在Linux中查询 DNS 记录,这三个命令可谓是最常用、最经典的

在进入正题之前,先聊聊为什么我们需要检查 DNS 记录。DNS 是互联网的基石,它负责把域名解析成 IP 地址,确保你的浏览器能找到目标服务器。如果 DNS 出问题,可能导致网站打不开、邮件发不出去,...

测试人员如何在linux服务器中查询mysql日志?

测试工程师在测试软件的过程中,流程往往是先接口测试,接着就是功能性测试。在做功能性测试的时候,往往有这么一个工作场景,就是出现错误后,我们怎么快速排除数据库报错。举例某个电商网站,当我们文本框中输入“...