8.4 【C语言】通过指针引用字符串

这篇具有很好参考价值的文章主要介绍了8.4 【C语言】通过指针引用字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

8.4.1 字符串的引用方式

在C程序中,字符串是存放在字符数组中的。想引用一个字符串,可以用以下两种方法。

(1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串。

例:定义一个字符数组,在其中存放字符串“I love China!”,输出该字符串和第8个字符。

#include<stdio.h>
int main(){
    char string[]="I Love China!";
    printf("%s\n",string);
    printf("%c\n",string[7]);
    return 0;
}

例:将字符串a复制为字符串b,然后输出字符串b。

#include<stdio.h>
int main(){
    char a[ ]="I am a student",b[20];
    int i;
    for(i=0;*(a+i)!='\0';i++)
    *(b+i)=*(a+i);
    *(b+i)='\0';
    printf("string a is:%s\n",a);
    printf("string b is:");
    for(i=0;b[i]!='\0';i++)
    printf("%c",b[i]);
    printf("\n");
    return 0;
}

例:用函数调用实现字符串的复制

#include<stdio.h>
int main(){
    void copy_string(char from[],char to[]);
    char a[]="I am a teacher.";
    char b[]="you are a student.";
    printf("string a=%s\nstring b=%s\n",a,b);
    printf("\ncopy string a to string b:\n");
    copy_string(a,b);
    printf("string a=%s\nstring b=%s\n",a,b);
    return 0;
}
void copy_string(char from[],char to[]){
    int i=0;
    while(from[i]!='\0'){
        to[i]=from[i];i++;    
    }
    to[i]='\0';
}

8.4.3 使用字符指针变量和字符数组的比较

字符数组和字符指针变量都能实现字符串的存储和运算,二者之间区别有以下几点。

(1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),绝不是将字符串放到字符指针变量中。

(2)赋值方式。可以对字符指针变量赋值,但不能对数组名赋值。

(3)初始化含义,对字符指针变量赋初值。

char *a="I love China!";等价于 char *a;a="I love China!";

(4)存储单元的内容。编译时为字符数组分配若干存储单元,以存放各元素的值,而对字符指针变量,只分配一个存储单元。

(5)指针变量的值是可以改变的,而字符数组名代表一个固定的值(数组首元素的地址),不能改变。

例8.21:改变指针变量的值

#include<stdio.h>
int main(){
    char *a="I love China!";
    a=a+7;                     //改变指针变量的值,改变指针变量的指向
    printf("%s\n",a);         //输出从a指向的字符开始的字符串
    return 0;
}

(6)字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容是不可以被取代的。

(7)引用数组元素。

(8)用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。文章来源地址https://www.toymoban.com/news/detail-667922.html

到了这里,关于8.4 【C语言】通过指针引用字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构(C语言):两个字符串比较大小

    在写这篇文章之前,作者想先和大家分享一个小故事。如果你不想看这个小故事的话,可以直接跳到第二点哦。 为了锻炼自己的编码能力,平时作业和实验题的代码我都是不看书、不看老师的PPT,按照自己的思路一行一行敲出来的。同时也不太理解那些照着书敲代码的同学。

    2024年02月03日
    浏览(44)
  • 计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

    1,题目描述 2,分析题目 Ⅰ,题目中要求 除了函数的形参,函数中不能够使用多余的变量 (这是比较 苛刻 的要求)。 Ⅱ,根据此,很自然的想到需要使用 递归 来解决问题。 Ⅲ, 字符串的结束标志是\\\'\\0\\\',因此可以将 读取到\\\'\\0\\\' 作为结束条件 3,关于递归的基本知识 Ⅰ,递

    2024年02月03日
    浏览(48)
  • C和指针(六)字符串、字符、字节

    字符串 1,C没有显式的字符串类型,以字符串常量形式出现,存储于字符数组中。 2,C字符串是一串以NUL字节结尾的字符。 1)字符内部不能出现NUL字节。 2)NUL字节是字符串的终止符,不是字符串的一部分,所以字符串长度不包括NUL字节。 3,头文件string.h包含了使用字符串

    2024年02月10日
    浏览(40)
  • 【力扣】344. 反转字符串 <首尾指针>

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入 :s = [“h”,“e”,“l”,“l”,“o”] 输出 :[“o”,“l”,“l”,“e”

    2024年02月13日
    浏览(42)
  • 《C和指针》读书笔记(第九章 字符串、字符和字节)

    在C语言中,字符串和数组有很多相似之处,且官方提供了很多的库函数可供调用。那么字符串和数组这对姐妹花,究竟有着什么样的亲密关系,而作为我们本期的重点角色,字符串又有何独特之处呢? C语言并没有显式的字符串数据类型,因为字符串以字符串常量的形式出现

    2024年02月08日
    浏览(44)
  • 《热题100》字符串、双指针、贪心算法篇

    思路:对于输入的的字符串,只有三种可能,ipv4,ipv6,和neither ipv4:四位,十进制,无前导0,小于256 ipv6:八位,十六进制,无多余0(00情况不允许),不为空 class Solution:     def solve(self , IP: str) - str:         if \\\'.\\\' in  IP: #有可能是IPV4             res = IP.split(\\\'.\\\')            

    2024年02月09日
    浏览(42)
  • 一个退役中校教你如何用go语言写一个基于B+树的json数据库(进阶篇)之json字符串解析为BsTr结构(一)

    1.对象式json字符串 s := \\\"{\\\"put\\\":{\\\"putjsontest\\\":{\\\"aaa\\\":\\\"sdftsdfs\\\\dfe29asdf\\\",\\\"aaab\\\":true,\\\"arrarrstrct\\\":{\\\"nnn\\\":-1234567890,\\\"ccc\\\":[[\\\"sdftsdfs\\\\dfe29asdf\\\",\\\"nmbndfvdfgfdg\\\"],[\\\"sdftsdfs\\\\dfe29asdf\\\",\\\"poiuiyyttt\\\"]]},\\\"ddd\\\":\\\"sdftsdfs\\\\dfe29asdf\\\",\\\"fff\\\":false,\\\"comboolarr\\\":[{\\\"boolarr0\\\":[true,false]},{\\\"boolarr1\\\":[true,false]}]}

    2024年02月21日
    浏览(50)
  • 【数据结构-字符串 三】【栈的应用】字符串解码

    废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是: CodeTop ,筛选条件为: 目标公司+最近一年+出现频率排序 ,由高到低的去 牛客TOP101 去找,只有两个

    2024年02月07日
    浏览(79)
  • 【算法】算法(模拟、指针等)解决字符串类题目(C++)

    字符串题目有很多种,这里筛选几个考察模拟、双指针等的题目,并用相关算法解决。 思路 题意分析 :题目要求找到字符串数组中的最长公共前缀。 解法一 : 两两比较 遍历数组,每次比较后更新最长公共前缀,并循环比较找最长公共前缀 解法二 : 统一比较 遍历第一个

    2024年01月16日
    浏览(45)
  • LeetCode-763. 划分字母区间【贪心 哈希表 双指针 字符串】

    给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:s = “ababcbacadefegdehijhklij” 输

    2024年04月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包