- 浏览: 296178 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
定义:
char ch[10];
char ch2[];
char* str;
"string"。
1.全局的变量和函数内的static变量,存放在内存堆区域。
2.全局的数组和函数内定义的static的数组,存放在内存堆区域。
3.局部变量,数组,存放在内存的栈区域。
4.定义char ch[10]时,如果是全局或者static的,就在堆区域给他分配10byte的空间,并且如果用户没有给它初值,10byte数据全部置零。
5.定义char ch[10]时,如果是局部数组(在函数内定义且不是static的),则在栈区域分配10byte的空间,如果用户没有给它初值,10byte的数据未知,为内存中原来的不确定数据。
6.定义char * str时,给str分配一个4byte的空间,用于保存一个地址。该地址可以指向任意地方。如果没有给它初值,则其中数据是该片内存原来的数据,所以会指向一个不确定的地方,这时候如果对该指针指向的地方赋值,可能会因破坏未知地址内存数据,造成系统崩溃。
7.“string”在代码中出现时,自动分配空间,在内存中的存放是string\0,占用7个byte. “string”本身可以作为一个地址来看,该地址就是s字母所在的内存位置。
8.str=“string”是: 开始已经定义了一个char 指针str,且没指向任何地方。该语句,把一个string字符串加上\0结束符存放在内存中,并且把该字符串的地址,也就是s的地址,即“string”给str,使str指向“string”所在的空间。
9.ch=“string”是不对的。 ch是一个数组。数组名虽然也就是数组第一个元素的地址。与指针有相似的地方。但是指针可以指向任意的地方。数组一旦定义,其地址就是固定的,数组名ch所指向的地方就只能是ch[0]的地址,是不能够修改的,不能够再指向其他的地方了。这里可以理解为系统给ch数组分配了一段10byte的空间。“string”也有另一段7byte的空间,但是ch是不能重新指向“string”所在的地方的。
10.str=NULL同第8项。 str定以后,指向未知区域。后面可以把str指向一个有效区域或者一个NULL区域。最好在定义的时候就给它指向NULL区域,以免出现第6项中的崩溃问题。在使用str的时候,再给它一个有效地址,如第8项中的赋值。
11.ch=NULL同第9项。ch作为数组名,内存是在定义时就分配好的。不能再指向其他地方,或者NULL。
12.在定义并初始化 char *str时,可以char *str=ch,数组ch的起始地址,给str,把该地址存放在str所在的4byte空间中。
12.在定义之后,赋值时,str=?? 是把??作为一个地址,给到str,存放在str所在的4byte的内存空间,如第6项。所以会出现类似str=ch2,或者str=“string”,这个语句的作用是让str指向其他的地址。另不能出现str=12等现象,因为12做作为一个地址,在内存中的数据是程序员不知道的,万一该地址的数据被修改了,会破坏系统数据,造成未知问题。
13.*str=??是把??作为一个字符,给到*str,存放在str所指向的地址内存空间。该语句的作用是改变str所指向的空间内所存储的值,而不会改变str所指向的地方。例如char *str=“string”; *str=‘F’,则以%s格式打印出str后,输出为Ftring。另%s格式输出,会一str所指向的地址开始,一直输出到\0结束。
14.??=*str,是把str所指向的地址的数据,赋值给??。 例如如果str指向“string”, 则char c=*str的作用等同于char c=‘s’。
15.ch为数组名,其指向的地方不能改变,但其指向的地方的内容可以改变。如ch=??不对。但是ch[0]='W'是正确的。
16.str是指针,指针本身占有4byte的存储空间,该空间内存储了一个数据,该数据是内存中其他地方的地址。所以可以通过修改该数据,来使str指向其他的地址,如第12项。也可以通过*str来修改str所指向的地址内所存储的数据,如第13条。
17.“string”是一个地址。该地址就是s字母所在的地址。他可以作为一个地址赋值给指针,如str=“string”(在指针str定义,并初始化时,可以char *str=“string”格式。)
18.ch的固定性,你可以把ch 按照 char * const ch理解。即ch指向的地址不能变。但ch指向地址内的数据可以变。
参考资料来源:http://zhidao.baidu.com/question/181600612.html
发表评论
-
vs2008【断点无效】解决方法
2015-04-13 10:05 736有时候,我们在用vs2008调试的时候,会出现断点无效。如下 ... -
C++模板之特化与偏特化详解
2015-01-07 14:44 779转自:http://www.jb51.net/a ... -
c++中的typename与class<转>
2015-01-07 08:51 787在泛型编程的形参表中,关键字typename和class具有 ... -
traits:Traits技术初探
2015-01-06 12:49 753概述:traits是一种特性萃取技术,它在Generic ... -
POD型别
2015-01-06 12:37 727POD全称Plain Old Data。通俗的讲,一个类或结 ... -
c++核心基础知识(内存管理)
2015-01-04 22:22 657内存管理是C++最令人切 ... -
内存分配器<转>
2015-01-04 22:07 1341题记:内存管理一直 ... -
operator new在C++中的各种写法
2015-01-04 19:27 1156http://blog.sina.com.cn/s/blo ... -
可变参数va_list
2014-12-26 17:45 8471.要在函数中使用参数,首先要包含头文件<stdarg ... -
map注意的两个问题
2014-12-11 14:21 596代码1 void main() { ... -
关于C++ const 的全面总结<转>
2014-11-14 12:56 716C++中的const关键字的用法非常灵活,而使用const ... -
C++DLL编程详解
2014-10-08 19:44 1554DLL(Dynamic Link Library)的 ... -
C++&&QT调试时出现的一些错误
2014-10-08 15:14 750错误 原因 解决 ... -
【转】C++ function、bind以及lamda表达式
2014-09-11 09:42 836本文是C++0x系列的第四篇,主要是内容是C++0x中新增 ... -
STL函数对象及函数对象适配器【转】
2014-09-10 09:24 458一 函数对象Functor STL中提供了一元和 ... -
typedef和typename关键字[转]
2014-09-10 09:21 6501、类型说明typedef 类型说明的格式为: type ... -
C/C++中extern关键字详解[转]
2014-09-09 11:38 4631 基本解释:extern可以置于变量或者函数前,以标示变量 ... -
MYSQL在C—API 中可用的函数
2014-08-24 23:03 562mysql_affected_rows() 返 ... -
C & C++的编译
2014-08-12 09:21 473C/C++编译过程 C/C++编 ... -
C++全局变量的声明和定义
2014-08-11 20:51 393(1)编译单元(模块 ...
相关推荐
指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向
用指针数组的方法将字符串排序
详细介绍了易如何用指针来操作字符串和字符串指针,包括指针数组传参。
实验与指导-数组指针字符串 指针与数组区别
用指针数组的方法将字符串排序
//定义一个指向指针的指针,并赋予指针数组首地址所指向的第一个字符串的地址也就是abc\0字符串的首地址 cout<<*b<<"|"<<*(b+1)<<"|"<<*(b+2)<<endl; //---------------------------------------------------------...
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
数组例程详解 指针例程详解 字符串例程详解 PPT详细描述数组、指针和字符串在C程序中的应用
C++课程-3_数组指针与字符串 C++课程-3_数组指针与字符串
基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数...
指针与字符串指针数组多级指针及练习PPT学习教案.PPTx
指针数组字符串排序.c
字符串指针字符串指针与字符数组的区别与字符数组的区别 转载
本书针对程序设计的初学者,以面向对象的程序设计思想为主线,以通俗易懂的方法介绍C++语言,引导读者以最自然的方式,将人类习惯的面向对象的思维方法运用到程序设计中。主要内容包括程序设计基础知识、类与对象的...
C语言中的字符串数组和字符串指针.pdf
301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串(51单片机C语言实例Proteus仿真和代码)301-用指针数组作为函数的参数显示多个字符串...
72<br><br>0102 将字符串首字母转换大写 72<br><br>0103 如何进行字节数组和字符串的相互转换 72<br><br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73<br><br>4.2 获取字符串信息 73<br>...
求struct各种组合的长度,以及指针、数组、字符串的长度;
C程序设计:9章指针、数组、字符串.ppt