问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

字符指针变量和字符数组的区别

发布网友 发布时间:2022-04-23 05:48

我来回答

4个回答

热心网友 时间:2022-04-09 17:51

简单说一下:
字符(非字符串数组,字符数组和字符串数组是有区别的,字符串数组每个元素都是一个字符串)数组是用来存放字符的数组,在内存中占一段连续的单元。所占内存存放的是字符串。定义方法为:char a[N];N为常量表达式,可初始化。字符指针是指向字符的指针,所占内存单元存放的是所指字符的内存单元。定义方法为:char *p;

完整的解答:
1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的地址(字符串第一个字符的地址),决不是将字符串放到字符指针变量中
2)赋值方式
对于字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值:
char str[14];
str = "I love you!";
而对于字符指针变量,可采用如下赋值:
char *a;
a = "I love you!";
赋值给a的是字符串第一个元素的地址
3)对字符指针赋初值
char *a = "I love you!";
等价于
char *a;
a = "I love you!";
而对数组的初始化:
char str[14] = {"I love you!"};
不等价于
char str[14];
str = "I love you!";
4)如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,在其中可以放一个字符变量的地址
char *a, str[10];
a = str;
scanf("%s", a);
先使a有确定值,即使a指向一个数组的首元素,然后输入一个字符串,把它存放在以该地址开始的若干单元中
5)指针变量的值是可以改变的,而数组名是常量
6)用指针变量指向一个格式字符串,可以用它代替printf函数的格式字符串
char * format;
fomat = "a = %d, b = %f\n"
printf(format, a, b);
相当于
printf("a = %d, b = %f\n", a, b);
因此只要改变printf所指向的字符串,就可以改变输入输出格式,这种printf函数称为可变格式输出函数
也可以用字符数组实现:
char format[];
format = "a = %d, b = %f\n"

热心网友 时间:2022-04-09 19:09

首先第一点,非常重要的一点:指针和数组是不同的两个类型!

我们从可以从C语言标准文档中得知:
ISO/IEC 9899:1999 - programing language c
6.2.5 Types

热心网友 时间:2022-04-09 20:44

字符数组名与字符串指针变量名的区别2009-01-19
19:08授课内容:
一、字符串指针变量的说明和使用
字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。
对指向字符变量的指针变量应赋予该字符变量的地址。如:
char
c,*p=&c;表示p是一个指向字符变量c的指针变量。而:
char
*s="c
language";则表示s是一个指向字符串的指针变量。把字符串的首地址赋予s。
请看下面一例。main(){
char
*ps;
ps="c
language";
printf("%s",ps);
}
运行结果为:
c
language
上例中,首先定义ps是一个字符指针变量,
然后把字符串的首
地址赋予ps(应写出整个字符串,以便编译系统把该串装入连续的一
块内存单元),并把首地址送入ps。程序中的:
char
*ps;
ps="c
language";等效于:
char
*ps="c
language";
输出字符串中n个字符后的所有字符。
二、字符指针变量的运算
main(){
char
*ps="this
is
a
book";
int
n=10;
ps=ps+n;
printf("%s\n",ps);
}
运行结果为:
book
在程序中对ps初始化时,即把字符串首地址赋予ps,当ps=
ps
+10之后,ps指向字符“b”,因此输出为"book"。
main(){
char
st[20],*ps;
int
i;
printf("input
a
string:\n");
ps=st;
scanf("%s",ps);
for(i=0;ps[i]!='\0';i++)
if(ps[i]=='k'){
printf("there
is
a
'k'
in
the
string\n");
break;
}
if(ps[i]=='\0')
printf("there
is
no
'k'
in
the
string\n");
}
本例是在输入的字符串中查找有无‘k’字符。
三、字符串指针作为函数参数的使用。
要求把一个
字符串的内容复制到另一个字符串中,并且不能使用strcpy函数。函
数cprstr的形参为两个字符指针变量。pss指向源字符串,pds指向目标字符串。表达式:
(*pds=*pss)!=`\0'
cpystr(char
*pss,char
*pds){
while((*pds=*pss)!='\0'){
pds++;
pss++;
}
}
main(){
char
*pa="china",b[10],*pb;
pb=b;
cpystr(pa,pb);
printf("string
a=%s\nstring
b=%s\n",pa,pb);
}
在上例中,程序完成了两项工作:一是把pss指向的源字符复制
到pds所指向的目标字符中,二是判断所复制的字符是否为`\0',若
是则表明源字符串结束,不再循环。否则,pds和pss都加1,指向下
一字符。
四、使用字符串指针变量与字符数组的区别
用字符数组和字符指针变量都可实现字符串的存储和运算。
但两者是有区别的。在使用时应注意以下几个问题:
1.
字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。
2.
对字符数组作初始化赋值,必须采用外部类型或静态类型,如:
static
char
st[]={“c
language”};而对字符串指针变量则无此*,如:
char
*ps="c
language";
3.
对字符串指针方式
char
*ps="c
language";可以写为:
char
*ps;
ps="c
language";
而对数组方式:
static
char
st[]={"c
language"};不能写为:
char
st[20];
st={"c
language"};而只能对字符数组的各元素逐个赋值。
从以上几点可以看出字符串指针变量与字符数组在使用时的区别,同时也可看出使用指针变量更加方便。
前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。但是对指针变量直接赋值是可以的。因为c系统对指针变量赋值时要给以确定的地址。因此,
char
*ps="c
langage";或者
char
*ps;
ps="c
language";都是合法的。

热心网友 时间:2022-04-09 22:35

餐桌蹬灿东莞叛麓
指向字符串的指针变量和字符数组有什么区别?

区别一:定义不一样 1、字符串指针变量本身是一个变量,用于存放字符串的首地址。字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。2、字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。区别二:对字符串指针方式不同 1、char *ps=”C Language”;可...

字符指针变量和字符数组的区别

字符(非字符串数组,字符数组和字符串数组是有区别的,字符串数组每个元素都是一个字符串)数组是用来存放字符的数组,在内存中占一段连续的单元。所占内存存放的是字符串。定义方法为:char a[N];N为常量表达式,可初始化。字符指针是指向字符的指针,所占内存单元存放的是所指字符的内存单元。定义方...

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

一、字符串指针变量的说明和使用 字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。对指向字符变量的指针变量应赋予该字符变量的地址。如: char c,*p=&c;表示p是一个指向字符变量c的指针变量。而: char *s="C Language";则表示s是一个指向字符...

字符数组和字符指针变量的区别是啥呀?

数组是一个数据结构,指针是一种类型指向变量在内存里的位置,两者原本没有什么相同点,让大家容易产生他们直接有联系的错觉是因为c/c++语言标准中,使用数组名的时候会转换为指向数组第一个元素的地址的指针。数组内储存的数据在内存中是连续的,所以下面代码中:char str[]={'H','e','l','l','...

请教字符数组和字符串指针的区别

(3)赋值方式不同。对字符数组不能整体赋值,只能转化成份量,对单个元素进行。而字符指针变量赋值可整体进行。例如:char s[10];s= \"C++\";/*错,s是常量,怎能被赋值*/ (4)在定义一个字符数组时,编译时即已分配内存单元,有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,...

字符串数组与字符串变量的比较

1. 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址 为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。2. 对字符数组作初始化赋值,必须采用外部类型或静态类型,如:static char st[]={“...

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

一种是字符数组,另一种是字符串常量,它们在内存中的存储位置不同,使得字符数组可以读取和修改,而字符串常量只能读取不能修改。三、存取效率 char *a = “abcd”; 存于静态存储区。在栈上的数组比指针所指向字符串快,因此慢。而char a[20] = “abcd”; 存于栈上,更快。

char p[]和char *p的区别

一个指针,这个指针指向一个字符串常量 区别在于:数组的话,字符串是存在于这个数组里的,因为这个数组属于局部变量,所以你就算把数组的地址返回给主函数,主函数也没有办法再访问这个地址了。但是如果是指向字符串常量的指针,这个字符串是放在程序的常量区而不是放在局部变量中,那么你把这个常量的地址...

1.字符串指针变量与字符数组都可实现字符串的存储和运算,所以两者没有...

【错误】字符串指针变量本身是一个变量,用于存放字符串的首地址。字符数组用来存放整个字符串。

字符数组和字符指针有什么区别??

使用上基本没有区别,除了sizeof()作用在上面得到的值不一样(由于类型不一样)

字符数组的赋值方法是什么 数组用不用加向量剪头符号 字符串的表示方法有哪几种 模块化程序设计的特点 开发一个C语言程序要经过哪四个步骤 c语言程序的构成 二进制1+1=? 局部变量和全局变量的区别 什么是构成C语言程序的基本单位
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
骨髓炎中药处方 骨髓炎中药的治疗方法 夫妻孩子问题 关于孩子探视的问题解决 ...加工应税消费品,则委托加工物资的实际成本包括 委托外单位加工完成的存货其实际成本包括哪些 同程网上的机票价和机场的是一样的吗? 在机场买票最多能提前多少天... 什么情况需要查询征信 高分悬赏 质量效应2女性完美存档 用于导入到3中 jy03045101@sina.com... 【高分悬赏】PSP修改魔界战记2中文版存档为满金,全最终武器防具,有意... 现在家里都流行装投影仪了,投影仪相较于液晶电视有什么优势? c语言字符串数组和字符串指针数组的区别? 电视好还是投影仪好?电视和投影仪的优缺点分别有哪些? 简述字符串数组和字符指针的区别,举例说明。 投影电视优缺点 字符数组和字符指针的区别 现在越来越多人喜欢安装投影,投影真的比电视好吗? 数组和指针的区别,字符数组和字符串指针区别 C语言字符指针和字符数组的区别 微型投影仪的优缺点都有哪些? 数组和指针的区别,字符数组和字符串指针区 指针与数组 字符指针,字符串和字符数组的区别 苹果手机被水湿了 晾干之后屏幕成黑白的 是什么原 VIVOIQ手机进水了,然后手机出现黑白黑白,有的时候正常,屏幕没坏,屏幕一闪一闪的有时候直接不显? 手机进水了 屏幕成黑白的了 还能抢救吗 OPPOA53手机进水后,照出的照片是黑白的怎么办? 手机掉水里了,不能用了。屏幕变黑白色了,屏幕也点不开了,怎么回事 手机进水再开机的时候屏幕变成黑白的了而且全部不受控制了怎么搞 华为荣耀8c手机页面为什么是黑白色,怎么调回? 苹果手机如果进水了,外面。是好的,里面变成黑白色的怎么办? 字符数组和字符指针的区别与联系 投影仪和电视应该怎么选,分别都有哪些优缺点? C语言中字符串数组与字符指针数组有什么区别?怎么用 投影与显示器的优缺点 C语言中指针定义的字符串和数组定义的字符串的区别 投影仪和电视相比有什么优缺点? 8. 使用字符指针和字符数组表示字符串时,二者有何区别? 有的人喜欢买液晶电视,有人喜欢买投影仪,俩者之间有什么优缺点? C语言中字符串数组与字符指针数组有什么区别 投影仪和液晶电视比较有什么优缺点? 字符串数组和字符串指针的区别? 字符数组名,无名字符串和字符指针有什么区别? 观感体验好,投影仪到底比电视机好在哪里? C++ 字符数组和字符指针 投影机和液晶电视机有什么优缺点? 关于字符数组,字符指针和字符串之间的赋值问题 液晶电视和家用投影仪相比,各自有什么优劣势? 通过指针处理字符串和通过数组处理字符串有什么区别? 小龙虾煮30分钟会不会太老? 自制小龙虾,虾要煮多久相对好一些?