使用字符串指针变量与字符数组的区别

用字符数组和字符指针变量都可以实现字符串的存储和运算,但是两者是有区别的。在使用时,应注意以下几个问题:

1)   字符串指正变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在该首地址的一块连续的内存空间中并以“\0”作为字符串的结束。字符数组是由若干个数组元素组成的,它可用来存放整个字符串。

2)   赋值方式。对字符数组只能对各个元素赋值,不能用以下方式对字符数组赋值。

对字符指针变量,可以采用下面方法赋值。

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

4)   如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个地址值。即该指针变量可以指向一个字符型数据,但如果未对它赋一个地址值,则她并未具体指向一个确定的字符数据,所以不提倡这种方法。

5)   指针变量的值是可以改变的,数组名虽然代表地址,但它的值是不能改变的。可以使用下标形式引用所指定的字符串中的字符。

6)   用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。也可以用字符数组实现,但不能采用赋值语句对数组整体赋值。例如:

时间: 2024-10-18 00:32:20

使用字符串指针变量与字符数组的区别的相关文章

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

使用字符串指针变量与字符数组的区别 (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址.(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同.例如: char str[ ] ="I am a student ! " ,s[200]; char *pc="You

字符串指针(char*)和字符数组(char [])区别

原文:http://www.blogbus.com/kavine-logs/29243638.html 今天在编写几个小函数的时候,半天调不通,长久不使用C++知识都快忘光了,赶紧拣些起来应付即将到来的应聘. void main(){    char* pStr1 = "Hello!";    char pStr2[] = "Hello!";    change(pStr1);    change(pStr2);}void change(char* pInstr){

指针系统学习5-对使用字符指针变量和字符数组的讨论

虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈-- 主要概括起来有以下几点: 1. 字符数组由若干个元素组成,每个元素中  放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),决不是将字符串放到字符指针变量中. 2. 赋值方式.对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值.     char  str[20];     str=″I love Fishc.com!″;    而对字符指针变量,可以采用下面方法赋值:  

对使用字符指针变量和字符数组的讨论

区别:1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址). 2.赋值方式.对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值:char str[20]; str="I love China";而对字符指针变量,可以用如下方法赋值:char *a; a="I love China ";注意,赋值给a的不是字符,而是字符串的第一个元素的地址. 3.对字符指针变量赋初值:char *a="I lov

c语言之字符指针变量和字符数组的异同

1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),而不是将字符串放到字符指针变量中. 2.赋值方式.对字符数组只能对各个元素进行赋值,不能用以下办法对字符数组进行赋值. char str[20]; str = "ni hao a"; 而对于字符指针变量,可以采用以下方式赋值: char *a; a = "ni hao a"; 但需要注意的是赋值给a的不是字符,而是字符串中第一个元素的地址. 3.如果定义了一个

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

用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1. [字符串指针变量]本身是一个变量,用于存放字符串的首地址. 而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. [字符数组]是由于若干个数组元素组成的,它可用来存放整个字符串. 2. 对字符串指针方式  char *ps="C Language"; 可以写为: char *ps;  ps="C Language"; 而对数组方式

C类型字符串和字符数组的区别

1.字符串和字符数组的区别,字符数组和普通数组一样,里面的每个元素是一个个的字符,字符串是存在字符数组中的,字符串的结尾处补上了“\0”截止符. 定义过字符串后,得到的是字符数组的首元素的指针,在结尾处加入截止符,可以方便的访问字符串中的任何一个元素.C类型的字符串是存在字符数组中的,在字符串的结尾处补上"\0",这个结尾符是用来标志字符串结尾的,它的作用是const * p; //p是一个常量指针 2.数组名和指针的区别 int a [20]; int *p =a; (1)数组名的内

Delphi字符串、PChar与字符数组之间的转换

来自:http://my.oschina.net/kavensu/blog/193719 ----------------------------------------------------------------- var s: string; p: pchar; a: array[1..20] of char; 1.字符串 ---> PChar p := PChar(s); 2.PChar ---> 字符串 s := p; 3.PChar ---> 字符数组 StrCopy(@a

编程题:比较指向数组元素的指针变量和指向数组的指针变量的不同。

#include<stdio.h> void main() {int a[2][3]={1,2,3,4,5,6}; int *p1,(*p2)[3]; /*p1指向数组元素,p2指向包含3个元素的一维数组*/ p1=a[0];p2=a; /*用指向数组元素的指针变量输出二维数组元素*/ for(;p1<a[0]+6;p1++) printf("%4d",*p1); printf("\n"); /*用指向以为数组的指针变量输出二维数组元素*/ for