`
mzqthu
  • 浏览: 76718 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言字符串指针的用法体会

阅读更多

第一次发表博文,写得好不好请大家见谅。

这篇博文主要想讲一下最近遇到的有关字符串的问题。

我在练习指针的时候遇到这样一个问题,要求将一个字符串中间的某些部分删去,比如"abcdefghigk"删去中间几个字符以后变成"abcdigk",必须使用指针而不是数组。这看起来是一个很简单的问题,可是在写出代码以后却遇到一个问题,编译器通过了,但是运行却出现了0XC0000005的错误,说指针指向的位置写入时发生访问冲突。也就是无法进行修改。

然后在调试的过程中发现了问题所在行。简单点说,问题就是这句语句:*p = *q;

这句话看似没有错误,所以我就各种百度、google,查找有关字符串和指针的知识,最后终于得出了结果。下面就将结果展示给大家。

(1)字符串指针是一个指向常量的指针,也就是说,如果定义为char *p="ddddddd";那么*p就不能够进行赋值操作了。即再有一条*p = "d";那么就会产生以上的错误。

(2)为了避免这种错误,在定义和初始化的时候只能这样: char p[] = "ddddddd",这样定义的是一个字符数组,数组名p可以是一个指针,它指向字符串的第一个字符。这样就可以对字符串进行赋值或者其他改变值的操作了。

(3)这是为什么呢,原因在于,指向字符串的指针指向的是一个常量,常量是存储在静态内存区,而变量是存储在动态内存区。p[]是一个字符数组变量,存放字符串。而*p=“ddd”中的"ddd"是一个常量字符串,存放在静态内存区,故而不可以被修改。

 

然后,我还有一个问题,就是有时候在写程序时,并不知道所需要输入的字符串的大小,所以想是否可以利用指针,然后可以使:

char *p;

cin>>p;

这样来输入不限多的字符,显然这样做是不可以的。其实也不是显然,我试验了好多种方法都不行。最后得到的结果是:

(1)只能够定义一个大的数组,这样是一个比较浪费空间的方法。

char p[1000];

(2)还可以再输入前,先输入一个需要输入的大小,然后动态申请这么多的内存。

char p[];

int n;

cin>>n;

p=new char(n);

cin>>p;

(3)如果不这样做的话,还有一种比较麻烦的方法,就是使用链表,动态的进行。这样可以输入不限多字符。但显然会浪费很多效率。

 

第一次写。请大家多多指正,互相交流。

1
2
分享到:
评论

相关推荐

    c语言学习心得体会.doc

    8.C语言的指针和数组:包括指针的概念、指针的使用、数组的概念、数组的使用等。 9.C语言的输入输出函数:包括putchar()、printf()、getchar()、scanf()等。 10.C语言的学习方法:包括自学、上选修课、参加考试等...

    C语言指针教学探究.pdf

    教学中,教师需将指针与实际应用相结合,如在函数、数组、字符串和文件操作中的应用,让学生在实践中加深对抽象概念的理解。 最后,由于指针的灵活性和使用上的复杂性,学生在学习过程中可能会出现错误,甚至导致...

    大一c语言数组实验心得.docx

    通过实验和实践,掌握了数组的使用方法,并对指针和数组的关系进行了总结和分析。 一、数组的定义和使用 数组是 C 语言中一种基本的数据结构,用于存储一组相同类型的数据。数组可以是一维数组或二维数组,一维...

    C语言指针在项目课程中的应用.pdf

    在C语言中,指针广泛应用于数组、字符串、结构体等多种数据类型的访问和操作中,同时也是文件操作中不可或缺的元素。 在教学过程中,由于指针的概念抽象且容易出错,很多学生在学习指针时遇到困难。这些困难不仅...

    c语言常见题型、常见函数头文件及用法、体会等

    3. `<string.h>`:字符串处理函数,如strcpy(), strcat(), strlen()等。 4. `<math.h>`:数学函数库,如sqrt()求平方根,pow()求幂,sin(), cos(), tan()等三角函数。 5. `<time.h>`:时间处理函数,如time()获取...

    课程设计--字符串的操作..doc

    通过这个课程设计,学生将学习到C语言中关于字符串处理的诸多技巧,如内存管理、字符串函数的使用以及结构体的综合应用。此外,他们还将学会如何组织代码,使其更易于理解和维护,这对成为一名合格的程序员至关重要...

    c语言实训练习

    4. **数组与字符串**:学习如何声明和初始化数组,理解字符串的表示方法及其常用操作。 #### 二、高级特性 除了基础语法外,还需要深入学习以下几个方面,这些是C语言的核心优势之一: 1. **函数与模块化编程**:...

    C语言课程设计电子词典

    - 字符串长度限定:至少支持20个词条的存储。 - **功能模块**: - **输入新词汇**:允许用户输入新的英文单词及其相关信息。 - **删除词汇**:提供选项让用户能够选择并删除特定的词汇。 - **查找词汇**:支持...

    C语言课程设计课题.ppt

    【C语言课程设计课题】是针对...例3通过字符数组计算字符串长度,体现了数组和循环语句在实际问题中的应用。 通过这样的课程设计,学生能够巩固和深化C语言知识,提升编程和问题解决能力,为未来的职业生涯做好准备。

    大学一年级下学期C语言程序设计实验报告答案完整版.doc

    7. 实验七:字符串与指针 8. 实验八:结构体 9. 实验九:文件操作 实验内容安排包括: 实验一:数据类型和表达式(验证性实验,2学时) 目的要求: (1)了解C语言中数据类型的意义。 (2)理解常用运算符的意义...

    C语言趣味程序百例精解

    书中通过动态内存分配、链表操作等例子,深入讲解了指针的使用方法,以及如何避免常见的指针错误,如野指针和内存泄漏,使读者能够更加熟练地进行内存管理。 ### 5. 函数与模块化编程 函数是C语言中实现代码复用的...

    数据结构c语言版栈的应用单括号匹配(实验报告)

    实验报告的主题是“数据结构C语言版栈的应用单括号匹配”,主要目的是通过实现一个程序来检测输入的字符串中的括号是否匹配。该程序利用栈这一数据结构来解决括号匹配问题,它允许括号的嵌套。实验内容包括定义栈的...

    设计一个简单计算器的C语言课程设计报告

    - 使用循环结构处理字符串中的每个字符,判断是数字、运算符还是括号,并相应地进行处理。 - 利用条件语句(`if-else`)判断字符类型,进而采取不同的处理逻辑。 - 应用了数学函数如`pow()`来进行数值计算。 ### ...

    C语言精彩编程百例

    你还会接触到数组和字符串的处理,如数组遍历、字符串复制与比较等。对于更高级的主题,比如结构体和联合体的使用,以及文件操作,书中也会有相应的实例来引导学习。 不仅如此,书中还可能包含错误处理和调试技巧,...

    《C语言程序设计》综合实习报告.pdf

    《C语言程序设计》综合实习报告中,学生通过一系列任务深入理解和应用了C语言的核心概念,特别是关于指针、数组、函数以及字符串处理等方面的知识。以下是实习报告中的关键知识点、难点及解决办法的详细说明: 1. *...

    c语言实习学生成绩管理系统.doc

    - 调试过程中,重点在于理解字符串和字符之间的区别,以及如何正确地使用它们。 - 通过函数的调用来简化程序结构,使得代码更易于理解和维护。这是C语言的一个重要特点,它允许函数作为独立的模块进行复用。 - ...

    C语言入门经典(第4版)--源代码及课后练习答案

    7.5 使用指针处理字符串 268 7.5.1 更多地控制字符串输入 268 7.5.2 使用指针数组 269 7.6 设计程序 280 7.6.1 问题 280 7.6.2 分析 281 7.6.3 解决方案 281 7.7 小结 291 7.8 习题 291 第8章 程序的结构 ...

    《C和指针》全面解读与编程实践

    内容概要:这篇PDF是对《C和指针》一书的全面解读,详细覆盖了C语言的重要主题,如数据类型、语句、操作符、指针、函数、数组、字符串、结构体与联合等。针对每章节给出习题及其解答,并分享了许多编程技巧与提示。...

Global site tag (gtag.js) - Google Analytics