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

字符串表示形式—字符数组和字符指针的区别

阅读更多
Char *p1 = “A String.” 和 char p2[] = “another String.” 写法的不同

p1指向的这个字符串是个常量, 不可改变。 程序在编译期间就为"A String."这个字符串分配了固定的空间, 它被存储在全局静态区中. 编译器只是把指针p1的指向的地址赋为“A String.”的首地址,并没有为指针p1指向的地址分配可供操作的内存(除非使用malloc),如果试图改变p1指向的字符串,则会出错(试图改变不可写内存内容的错误)。

而p2是个变量, 其内容可以被更新和改变, p2可以理解为一个不可改变其指向位置的指针, 即char * const p2, 它所占用的内存在程序运行时被自动分配和释放, 而p1占用的内存要等到整个程序结束时才被释放. 编译器为数组b分配了可供操作的存储空间.

#include <stdio.h>

void main() 
{
	void copy_string(char *si, char *di);
	char *ss,*dd;
	char from[] = "I am a student.";
	char to[]   = "You are a teacher.";

	ss = "I am a student.";
	dd = "You are a teacher.";
	
	printf("a:%s\nb:%s\n",ss,dd);
	copy_string(ss,to); //这样写没有问题
	//copy_string(ss,dd); //有问题
	//copy_string(from,to);//没问题
	printf("\n");
	printf("a:%s\nb:%s\n",ss,to);
}

void copy_string(char *si, char *di)
{
	for(; *si != '\0'; si++,di++)
		*di = *si;
	*di = '\0';
}



0
0
分享到:
评论

相关推荐

    字符串指针与字符数组的区别

    字符串指针字符串指针与字符数组的区别与字符数组的区别 转载

    C#将字符串数组传递给C++ DLL.rar

    这里的`UnmanagedType.LPArray`和`UnmanagedType.LPWStr`分别表示字符串数组和宽字符数组。 3. **处理字符串数组**: 在C#中,创建一个字符串数组,并调用`ProcessStrings`函数: ```csharp string[] ...

    用指针数组的方法将字符串排序

    在IT领域,特别是编程技术中,使用指针数组来对字符串进行排序是一种高效且常见的方法。...对于学习C语言和数据结构的初学者来说,这是一个非常有价值的实践案例,能够加深对指针、数组、函数和字符串处理的理解。

    易语言指针操作字符串和数组

    字符串指针的声明通常以`*`符号表示,例如`*字符串指针`。 - 使用`取指针内容`操作可以获取指针所指向的字符串内容,而`设指针内容`可以修改指针指向的字符串。 3. **操作字符串**: - 指针可以用来遍历字符串,...

    cstring是一个在C语言中的字符串类型,针对字符数组或动态字符数组作出了一些优化,使得字符串类型更加易用.zip

    cstring是一个在C语言中的字符串类型,针对字符数组或动态字符数组作出了一些优化,使得字符串类型更加易用.cstring 类型cstring是一个在C语言中的字符串类型,针对字符数组或动态字符数组作出了一些优化,使得字符...

    请用指针数组的方法将字符串排序

    在IT领域,特别是编程技术中,使用指针数组对字符串进行排序是一个常见且实用的技巧。根据提供的代码示例,我们可以深入探讨这一知识点,包括其原理、实现过程以及实际应用。 ### 使用指针数组对字符串排序的原理 ...

    C语言教学课件:14-3_指针数组(用于处理二维数组或多个字符串).ppt

    在C语言中,指针数组是一种重要的数据结构,广泛应用于字符串处理、矩阵运算和动态存储管理等领域。本文将详细介绍指针数组的定义、使用和应用。 一、指针数组的定义 指针数组是一种特殊的数组,它的元素是指针。...

    C++课程-3_数组指针与字符串

    字符串在C++中通常是以字符数组的形式存在的,例如`char str[10]`。字符串的结束标志是空字符`\0`,所以`str`的长度应至少为字符串长度加一,用于存放这个终止符。处理字符串时,经常会用到字符指针,比如`char* ...

    指针数组为字符串排序:1、冒泡排序 2、快速排序

    指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向

    C语言用指针将字符串数组位置颠倒

    C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ

    字符数组与字符指针

    虽然字符数组和字符指针都可以用来处理字符串,但它们在内存分配、使用方式等方面存在显著差异: 1. **内存分配:** - **字符数组:** 字符数组是在栈上分配内存的。字符串内容直接存储在数组中。 - **字符指针:...

    第5讲 指针高级之指针数组-将若干字符串按字母顺序(由小到大)输出

    总结起来,本讲介绍了如何使用指针数组来存储和排序字符串。通过定义一个指针数组,初始化各个元素指向字符串,然后对指针数组进行排序,可以实现字符串的字母顺序输出。这种技巧在处理动态数据集或需要高效排序时...

    C语言字符串指针(指向字符串的指针)_C语言中文网1

    字符串指针是指向字符数组的指针,通常用于表示字符串的开始位置。字符串常量在内存中是连续排列的,因此可以使用指针逐个访问字符直到遇到空字符'\0'。例如,`char *pstr = "example"`,`pstr`就是一个字符串指针...

    C语言中的字符串数组和字符串指针.pdf

    在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...

    第9章 指针和数组-4指针数组及其应用 - 用指针数组表示多个字符串1

    同时,指针数组还可以方便地进行字符串的排序、查找等操作,例如`SortString`函数就是一个例子,它接受一个字符串指针数组和数量,通过比较字符串并交换指针来对字符串进行排序。 总的来说,理解和熟练运用指针数组...

    C语言第讲指针与字符串字符数组PPT课件.pptx

    【C语言指针与字符串字符数组】 在C语言中,指针和字符数组都是处理字符串的重要工具,但它们之间存在显著的区别。 1. **字符指针与字符数组的区别** - **存储格式**:字符指针(变量)存储的是字符串的首地址,...

    C语言:数组、指针与字符串(简易入门、精髓)

    在C语言中,数组、指针和字符串是基础且重要的概念,它们构成了C语言的核心特性。数组是一系列相同类型变量的集合,可以是一维、二维或多维的。数组的声明通常采用`类型名 数组名[常量表达式]`的形式,例如`int a[10...

    c#调用VC编写的DLL 涉及到字符串 字符串数组用法

    C#中的字符串是基于.NET Framework的`System.String`类,它是不可变的,而C++中字符串通常是以字符数组(char*或wchar_t*)的形式存在。在传递字符串时,我们需要考虑内存管理,因为C#和C++对内存的处理方式不同。 ...

    C语言中的字符串数组和字符串指针

    本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。

    使用指针、数组处理在C语言中处理“字符串”

    例如,一个简单的字符串 `"hello"` 在内存中的存储形式为 `{'h', 'e', 'l', 'l', 'o', '\0'}`。字符串可以使用字符数组或字符指针来表示。 #### 字符数组表示法 ```c char str[6] = "hello"; ``` 这里 `str` 是一个...

Global site tag (gtag.js) - Google Analytics