判断题:字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串.正不正确?

作者&投稿:宫邵 (若有异议请与网页底部的电邮联系)
字符串的指针和指向字符串的指针变量的区别~

在C语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示;引用时,既可以逐个字符引用,也可以整体引用。
字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串。
1.定义字符指针变量
★ char *ps1;
ps1="form one";
char *ps1="form one";
lchar str[ ]= "form one", *ps1;
ps1=str;
注意: 字符指针变量ps1中,仅存储串常量的地址,而串常量的内容(即字符串本身),是存储在由系统自动开辟的内存块中,并在串尾添加一个结束标志’\0’。
2. 引用
1)逐个引用
main()
{ char *string="I am fine.";
for(; *string!=’\0’; string++)
printf("%c", *string);
printf("
");
}
2) 整体引用
main()
{ char *string="I am fine.";
printf("%s
",string);
}
程序说明:printf("%s
",string);语句
通过指向字符串的指针变量string,整体引用它所指向的字符串的原理:系统首先输出string指向的第一个字符,然后使string自动加1,使之指向下一个字符;重复上述过程,直至遇到字符串结束标志。

其它类型的数组,是不能用数组名来一次性输出它的全部元素的,只能逐个元素输出。
3.字符指针变量与字符数组之比较
虽然用字符指针变量和字符数组都能实现字符串的存储和处理,但二者有区别.
(1)存储内容不同。
字符指针变量中存储的是字符串的首地址,而字符数组中存储的是字符串本身(数组的每个元素存放一个字符)。

(2)赋值方式不同。
对字符指针变量,可采用下面的赋值语句赋值:
char *pointer;
pointer="This is a example.";
而字符数组是在定义时初始化。
char char_array[20]="This is a example."
(3)指针变量的值是可以改变的,字符指针变量也不例外;而数组名代表数组的起始地址,是一个常量,而常量是不能被改变的。

字符串常量的地址是字符串保存在内存的一组地址。字符数组的首地址代表着该字符串第一个元素的地址。

字符指针是指向字符类型的指针。字符指针并没有地址,当定义一个字符指针变量后,这个变量便有了自己的地址,字符指针变量同时保存着某个地址,这个地址也可以指向单个字符元素,也可以指向字符串。
如:
char a;
a=getchar();
char *p;//变量p本身有一个地址.
p=&a;//p保存了变量a的地址,也就是说p指向了a.
同样地,
char a[20]="english";
char *p=a;//p保存了字符数组的首地址,也就是说p指向了该数组的第一个元素。
求赏分~

正确。在C语言中,是将字符串作为字符数组进行处理的,要访问一个字符串一般有两种方法:
(1)#include<stdio.h>
int main()
{
char string[]="Hello world!";
printf("%s\n",string);
return 0;
}
(2)定义字符指针:
#include<stdio.h>
int main()
{
char *string; /*定义一个字符指针*/
string="Hello world!"; /*注意,这里是将字符串的起始地址赋给string */
printf("%s\n",string);
return 0;
}


判断题:字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指...
(2)定义字符指针:include<stdio.h> int main(){ char *string; \/*定义一个字符指针*\/ string="Hello world!"; \/*注意,这里是将字符串的起始地址赋给string *\/ printf("%s\\n",string);return 0;}

c语言基础问题?
字符串的长度与字符串在内存中所占的空间是不一样的。C语言规定,字符串在内存中存储时,以'\\0'作为结束标志。字符串的长度不包括'\\0',所以字符串A的长度是14。15是该字符串在内存中所占的字节数,也就是说,必须是15个字节才能存储这个字符串。补充一点:你用sizeof()测试A,结果是15(size...

C语言 解释下为什么输入字符串后就出现内存不能被读取的问题!_百度...
回答:是在编译运行就出现错误了吗?你把int search()提前在主函数前面里面声明一下看看,另外if和while里面做判定比较,都应该是==双等号int search()函数里面的if少了个=,编译应该有警告!

判断题希望大师给予帮助
19.字符型数据在内存中占2字节空间。( × )20.1.0在内存中占4字节空间。( × )21.32768+1在内存中占3字节空间。( × )22.字符“\\0”是字符串的结束标记,其ASCII代码为0。( √)23.若有说明:int a[3][4]={0};,则数组a中每个元素的初值都为0。( √ )24.调用strlen(“abc\\...

c语言试题。字符串"ABC"在内存中占用的字节数为?为什么呢?
c语言试题。字符串"ABC"在内存中占用的字节数为4,因为所有字符串都有一个'\\0'字符作为结束符标志。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入...

字符串hello world在内存中存放时是否占有11个的字节空间C++问题_百度知...
如果是 char str[] = {"hello world"} 占12个字节 如果是 char str[] = {'h','e','l','l','o',' ','w','o','r','l','d'} 就占用 11 个字节 最后那个'\\0' 最好加上, 不然 printf("%s", str)可能会出问题。

c语言问题1:字符串“\\\\\\1234\\\\\\n”在内存中占用的字节数是多少?为什 ...
\\ \\ 1 2 3 4 \\ \\ \\n \\0 10, 最后一个结束符占用1个字节, \\\\ 指的是 \\, \\n是回车键

c语言试题。字符串"ABC"在内存中占用的字节数为?为什么呢?
为便于C程序判断字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一个字符串结束标志---ASCII码值为0的空操作符'\\0'。所以占用字节数为4!

字符串"\\\\\\1234\\\\\\n"在内存中占用的字节数是? 怎么数?
\\\\这是一个字节, 对第二个\\进行转义, 这是一个 \\ 字符 \\\\ 1字节 1 1字节 2 1字节 3 1字节 4 1字节 \\\\ 1字节 \\\\ 1字节 \\n 1字节, 回车键 最后有一个结束符\\0, 表示字符串结束,占一个字节 总共10个字节 ...

关于c语言的问题
"BB\\n\\\\\\'\\r"前两个BB是两个字,\\n代表一个回车,\\\\代表一个\\,\\'代表',\\r是一个换行 所以,这个字符串一共有六个字符,即字符串的长度是6。又因为C中字符串要在末尾加个0表示结束,所以在内存中占的空间比实际长度多1,这题中为7。

博野县18068078207: 判断题:字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串.正不正确? -
雪行信达: 对.例如: char*p="abcdefg"; 指针p指向字符串的起始地址.

博野县18068078207: 字符串的指针和指向字符串的指针变量的区别 -
雪行信达: 在C语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示;引用时,既可以逐个字符引用,也可以整体引用. 字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串. 1. 定义字符指针变量 ★ ...

博野县18068078207: 汇编中 MSG DB 'Welcome',0DH,0AH CNT EQU $ - MSG 其中的 $ - MSG 是什么意思?cnt是定义的常量吗? -
雪行信达: MSG DB 'Welcome',0DH,0AHCNT EQU $ - MSG msg是定义变量指向字符串Welcome,相当于C语言里的指针也就是这个字符串在内存中的起始地址,而下边的CNT也是一个变量,他就是一个标志,代表后边EQU的内容,$的意思是取当前地址也就是CNT这一行的地址减去MSG一行的地址也就是定义字符串的长度,所以CNT代表的就是定义MSG所指向的字符串Welcome的长度应改为7个字节,即cnt代表数值7

博野县18068078207: char *s="abc",这是什么意思,s指向&a吗,abc在内存中是连续存放的吗,*s+1是b -
雪行信达: char *s="abc"; 意思是:定义一个字符指针变量s,并且将字符串常量的起始地址初始化给指针变量s.也就是说,存放在变量s里面的是一个地址,是字符串“abc”的首地址,即是字符'a'的地址."abc"是一个字符串常量,是连续存放的,由编译系统来管理其存放的存储空间,其实后面还有一个\0(字符串结束符)的.*(s+1)是b 因为s指向a,s+1指向b(即s+1是'b'这个字符的地址).*s+1的值也是b,因为*s+1='a'+1,所以是 'b'字符.

博野县18068078207: 数据结构中数组元素的起始地址和存储地址有什么区别? -
雪行信达: (1)数组A的存储量为6*8*6=288字节 (2)按行优先存放时,元素A1,4的起始地址、存储地址:1000+(1*8+4)*6=1072 (3)按列优先存放时,元素A4,7的起始地址、存储地址:1000+(7*6+4)*6=1276 数组元素的存储地址就是该元素在内存的起始地址

博野县18068078207: 在java中什么叫首地址 -
雪行信达: java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性.

博野县18068078207: char *p[10]={"abc","abcd","abcde","abcdef"}这个是怎么分配的,能画个简图么? -
雪行信达: p是个数组,这个数组中每个元素都是一个指针,指向了一个字符串,即:p[0] 指向了"abc",p[0]等于字符串"abc"在内存中的存储起始地址.p[1]指向了"abcd",p[1]等于字符串"abcd"在内存中存储起始地址.

博野县18068078207: 内存寻址方式具体是指什么? -
雪行信达: 一、隐含寻址 在指令中不明显的给出而是隐含着操作数的地址.例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址.二、立即寻址 指令的地...

博野县18068078207: 字符数组的起始地址是什么 -
雪行信达: 比如你的字符数组是a[] 那么起始地址就是a[0]

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网