字符指针 赋值

字符指针 赋值字符串赋值给字符指针(char*a=“hello”)的正确理解方式 对于语句 char*a=”hello”;       对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给指针表达式”*a”所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。       即正确顺序是:1.分配

大家好,又见面了,我是你们的朋友全栈君。

对于语句 char *a=”hello”;
对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式”*a”所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。 

        即正确顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针;
这里有两点需要考虑清楚的地方

①*a只是指向一个字符。举例如下:
[c++]
1. #include <stdio.h>

2. #include <stdlib.h>

3.
4. int main(void){

5. char *a=”bcd”;
6. printf(“输出字符:%c /n”, *a); /*输出字符,使用”%c”*/<br> printf(“输出字符:%c /n”, *(a+1) ); /*输出字符,使用”%c”*/
7. printf(“输出字符串:%s /n”, a); /*输出字符串,使用”%s”;而且a之前不能有星号”*” */
8. system(“pause”); /*为了能看到输出结果*/

9. }
10. /*运行结果如下:
11. 输出字符:b<br>输出字符:c 

12. 输出字符串:bcd*/ 

  
② 若字符串常量出现在在表达式中,代表的值为该字符串常量的第一个字符的地址。所以”hello”仅仅代表的是其地址。 原声明方式相当于以下声明方式:
[c++]
1. char *a;
2. a=”hello”;/*这里字符串”hello”仅仅代表其第一个字符的地址*/ f(“输出字
符:%c /n”, *(a+1) );  /*输出字符,使用”%c”*/  
7.     printf(“输出字符串:%s /n”, a); /*输出字符串,使用”%s”;而且a之前不能有星号
“*”  */   
8.     system(“pause”);  /*为了能看到输出结果*/   9. }  
10. /*运行结果如下: 
11. 输出字符:b<br>输出字符:c  12. 输出字符串:bcd*/   

*********************************************************************************************************************

C语言中,为什么字符串可以赋值给字符指针变量

char *p,a=’5′;

p=&a;                     //显然是正确的,

p=”abcd”;              //但为什么也可以这样赋值??

问:一直理解不了为什么可以将字串常量赋值给字符指针变量

 

答:

双引号做了3件事: 

1.申请了空间(在常量区),存放了字符串

2. 在字符串尾加上了’/0′    

3.返回地址

你这里就是 返回的地址  赋值给了  p                     






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157257.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ios输入框失去焦点_input去边框

    ios输入框失去焦点_input去边框如何解决ios下input框获取焦点时无法弹起的问题

  • 音视频的数字化原理「建议收藏」

    今天本写了篇dicom医学图像解析的文章,后面听人谈到了音视频,今天我就再从中学物理写下我理解的音视频数字化原理。**音频:**物理上说声音三要素音调,响度,音色,响度直观理解就是声音的大小,声音的高低(高音、低音),音色,又称音品这两个其实都跟频率有关。声音的数字化呢,其实来源于原理的,物理上人能听到声音频率的范围是20hz到20khz,数字化采集声音时一般时按44.1khz采集的,就是1s中采集44100次,然后用16byte2个字节来存,一个采样能存的层级就是-2的8次方到2的8次方-1层,总的就是

  • 数据库概念设计与逻辑设计[通俗易懂]

    数据库概念设计与逻辑设计[通俗易懂]一、概念设计概念设计的目的就是为了建立概念数据模型,概念数据模型也称为高级数据模型,之所以称为高级数据模型是因为它更接近于人的思维,而不是机器的思维,相比于关系模型更容易理解,此处的高级和低级的概念,与程序语言领域的高低级是一样的。我们通常称Java语言为高级语言,汇编语言为低级语言,是因为高级语言对于我们而言要比汇编语言更容易理解。关于概念数据模型,我们一般都会采用E-R图进行描述。E-R图的规则如下:1.实体采用矩形框,联系采用菱形框,属性采用椭圆形框。2.实体、联系、属性必须使用文字描

  • UCML应用框架平台的特点

    UCML应用框架平台的特点lUCML应用框架平台的特点1.UCML具有集成的、可编译的开发环境(1)该框架具有数据访问对象、业务对象、业务模版、工作流设计、业务规则设计、报表定义等组成部分,涵盖了一个业务系统开发所需的技术实现及细节;(2…

    2022年10月29日
  • MySQL explain详解

    MySQL explain详解MySQLexplain详解Explain简介本文主要讲述如何通过explain命令获取select语句的执行计划,通过explain我们可以知道以下信息:表的读取顺序,数据读取操作

  • 国外最流行的Bootstrap后台管理模板

    国外最流行的Bootstrap后台管理模板工欲善其事,必先利其器对于从事软件开发的您也一样,有一套熟悉的bootstrap后台ui框架让您的开发速度大幅度提升这是本人经常使用到的一些bootstrap后台框架推荐给大家第一名inspiniabootstrap演示地址http://cn.inspinia.cn效果图http://cn.inspinia.cnhttp://cn.inspinia.cn第二名…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号