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';
}
分享到:
相关推荐
字符串指针字符串指针与字符数组的区别与字符数组的区别 转载
这里的`UnmanagedType.LPArray`和`UnmanagedType.LPWStr`分别表示字符串数组和宽字符数组。 3. **处理字符串数组**: 在C#中,创建一个字符串数组,并调用`ProcessStrings`函数: ```csharp string[] ...
在IT领域,特别是编程技术中,使用指针数组来对字符串进行排序是一种高效且常见的方法。...对于学习C语言和数据结构的初学者来说,这是一个非常有价值的实践案例,能够加深对指针、数组、函数和字符串处理的理解。
字符串指针的声明通常以`*`符号表示,例如`*字符串指针`。 - 使用`取指针内容`操作可以获取指针所指向的字符串内容,而`设指针内容`可以修改指针指向的字符串。 3. **操作字符串**: - 指针可以用来遍历字符串,...
cstring是一个在C语言中的字符串类型,针对字符数组或动态字符数组作出了一些优化,使得字符串类型更加易用.cstring 类型cstring是一个在C语言中的字符串类型,针对字符数组或动态字符数组作出了一些优化,使得字符...
在IT领域,特别是编程技术中,使用指针数组对字符串进行排序是一个常见且实用的技巧。根据提供的代码示例,我们可以深入探讨这一知识点,包括其原理、实现过程以及实际应用。 ### 使用指针数组对字符串排序的原理 ...
在C语言中,指针数组是一种重要的数据结构,广泛应用于字符串处理、矩阵运算和动态存储管理等领域。本文将详细介绍指针数组的定义、使用和应用。 一、指针数组的定义 指针数组是一种特殊的数组,它的元素是指针。...
字符串在C++中通常是以字符数组的形式存在的,例如`char str[10]`。字符串的结束标志是空字符`\0`,所以`str`的长度应至少为字符串长度加一,用于存放这个终止符。处理字符串时,经常会用到字符指针,比如`char* ...
指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
虽然字符数组和字符指针都可以用来处理字符串,但它们在内存分配、使用方式等方面存在显著差异: 1. **内存分配:** - **字符数组:** 字符数组是在栈上分配内存的。字符串内容直接存储在数组中。 - **字符指针:...
总结起来,本讲介绍了如何使用指针数组来存储和排序字符串。通过定义一个指针数组,初始化各个元素指向字符串,然后对指针数组进行排序,可以实现字符串的字母顺序输出。这种技巧在处理动态数据集或需要高效排序时...
字符串指针是指向字符数组的指针,通常用于表示字符串的开始位置。字符串常量在内存中是连续排列的,因此可以使用指针逐个访问字符直到遇到空字符'\0'。例如,`char *pstr = "example"`,`pstr`就是一个字符串指针...
在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...
同时,指针数组还可以方便地进行字符串的排序、查找等操作,例如`SortString`函数就是一个例子,它接受一个字符串指针数组和数量,通过比较字符串并交换指针来对字符串进行排序。 总的来说,理解和熟练运用指针数组...
【C语言指针与字符串字符数组】 在C语言中,指针和字符数组都是处理字符串的重要工具,但它们之间存在显著的区别。 1. **字符指针与字符数组的区别** - **存储格式**:字符指针(变量)存储的是字符串的首地址,...
在C语言中,数组、指针和字符串是基础且重要的概念,它们构成了C语言的核心特性。数组是一系列相同类型变量的集合,可以是一维、二维或多维的。数组的声明通常采用`类型名 数组名[常量表达式]`的形式,例如`int a[10...
C#中的字符串是基于.NET Framework的`System.String`类,它是不可变的,而C++中字符串通常是以字符数组(char*或wchar_t*)的形式存在。在传递字符串时,我们需要考虑内存管理,因为C#和C++对内存的处理方式不同。 ...
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
例如,一个简单的字符串 `"hello"` 在内存中的存储形式为 `{'h', 'e', 'l', 'l', 'o', '\0'}`。字符串可以使用字符数组或字符指针来表示。 #### 字符数组表示法 ```c char str[6] = "hello"; ``` 这里 `str` 是一个...