C语言中字符串赋值的几个理解
在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。
一、首先,我们来看第一种赋值方法:指针式赋值

我们知道,上面的示例是显然可以正常执行的,也是很容易理解的。但是下面这种方式就令人有点难以理解和头大了。

通过程序的运行情况,我们可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,我们首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作。双引号主要做了3个工作,分别是:
(1)申请了空间(在常量区),存放了字符串。
(2)在字符串尾加上了“\0”。
(3)返回地址。
这里所返回的地址就赋值给了char *类型的指针变量p。
二、通过字符数组直接把字符串赋值。程序如下:

三、需要注意的一些问题
(1)直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的


C语言中字符串赋值的几个理解的更多相关文章
- C语言中字符串详解
C语言中字符串详解 字符串时是C语言中非常重要的部分,我们从字符串的性质和字符串的创建.程序中字符串的输入输出和字符串的操作来对字符串进行详细的解析. 什么是字符串? C语言本身没有内置的字符串类型, ...
- Go语言中字符串的查找方法小结
这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下 1.func Contains(s, substr strin ...
- C语言中字符串结束符'\0'
转自:http://www.cnblogs.com/kaituorensheng/archive/2013/12/09/3464462.html 本质 '\0'就是8位的00000000,因为字符类型 ...
- C语言中字符串存储方法
众所周知,C语言中没有数据类型能够存储字符串, char数据类型仅仅能够存储一个字符的数据,那么在C语言中关于存储字符串这一难题我们改何去何从呢? 下面将详述相关的字符串存储方法; 1,使用字符数组存 ...
- C语言中字符串的格式化
本文整理转载自:http://wenku.baidu.com/view/065d62fff705cc1755270989.html C语言中格式字符串的一般形式为: %[标志][输出最小宽度][.精度 ...
- python中的赋值操作与C语言中的赋值操作中的巨大差别
首先让我们来看一个简单的C程序: a = ; b = a; b = ; printf("a = %d, b = %d\n", a, b); 相信只要学过C语言, 不用运行程序便能知 ...
- c语言中字符串数组初始化的一点总结&& c++访问控制的三种方式
char *c[]={"ONE","TWO","THREE","FOUR"}; // c语言中定义了一个字符串数组(也称 ...
- c语言中字符串跨行书写的问题
字符串常量定义时的换行问题 如果我们在一行代码的行尾放置一个反斜杠,c语言编译器会忽略行尾的换行符,而把下一行的内容也算作是本行的内容.这里反斜杠起到了续行的作用. 如果我们不使 ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
随机推荐
- Python学习---进程 1225
进程创建 进程创建: 第一种:直接创建 第二种:利用类来实现 第一种:直接创建 from multiprocessing import Process import time def f(name): ...
- Hadoop学习---CentOS中hadoop伪分布式集群安装
注意:此次搭建是在ssh无密码配置.jdk环境已经配置好的情况下进行的 可以参考: Hadoop完全分布式安装教程 CentOS环境下搭建hadoop伪分布式集群 1.更改主机名 执行命令:vi / ...
- 批量备份mysql数据库(shell编程)
#!/bin/bash DBPATH=/mysqlbak MYUSER=root MYPASS= SOCKET=/var/lib/mysql/mysql.sock MYCMD="mysql ...
- python功能代码块记录
python Autopep8——按PEP8风格自动排版Python代码(参考链接) autopep8 --in-place --aggressive --aggressive test_autope ...
- 推荐一个可以把网页背景色调成护眼色的Chrome扩展应用
程序员一天有10几个小时要面对着电脑,老是这种白晃晃的屏幕,谁的眼睛受得了? 我在网上逛了一圈,找到一个比较实用的Chrome扩展应用,可以一键实现将Chrome打开网页的背景色修改成护眼的豆沙绿,这 ...
- PhoneGap Geolocation 获取地理位置 api
一. PhoneGap Geolocation 对象介绍 1.使应用程序可以访问地理位置信息.geolocation 对象提供了对设备 GPS 传感器的访问.Geolocation 提供设备的位置信息 ...
- 手把手教你自定义attr
最近在学习的过程中遇到了自定义的attr和自定义的style.因此各种百度,各种博客的学习,算是有了一个系统的了解.在这里记录下自己的收获. 一.为什么要使用自定义attr以及本文定位 在androi ...
- Oracle中序列的操作以及使用前对序列的初始化
Oracle中序列的操作以及使用前对序列的初始化 一 创建序列 create sequence myseq start with 1 increment by 1 nomaxvalue minva ...
- Yii自定义验证规则
简单的方法:在 model 内部定义规则 最简单的定义验证规则的方法是在使用它的模型(model)内部定义. 比方说,你要检查用户的密码是否足够安全. 通常情况下你会使用 CRegularExpres ...
- webpack导学
随着前端工程越来越复杂,单独建几个文件写业务代码,这样的方式已经无法保证项目的可维护性了. 所以我们就想把不同的逻辑拆成模块,然后分开引入这些模块,每个模块自己做自己的事情,这样就可以保证项目的可维护 ...