- 浏览: 308858 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (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 788有时候,我们在用vs2008调试的时候,会出现断点无效。如下 ... -
C++模板之特化与偏特化详解
2015-01-07 14:44 835转自:http://www.jb51.net/a ... -
c++中的typename与class<转>
2015-01-07 08:51 829在泛型编程的形参表中,关键字typename和class具有 ... -
traits:Traits技术初探
2015-01-06 12:49 799概述:traits是一种特性萃取技术,它在Generic ... -
POD型别
2015-01-06 12:37 769POD全称Plain Old Data。通俗的讲,一个类或结 ... -
c++核心基础知识(内存管理)
2015-01-04 22:22 704内存管理是C++最令人切 ... -
内存分配器<转>
2015-01-04 22:07 1389题记:内存管理一直 ... -
operator new在C++中的各种写法
2015-01-04 19:27 1204http://blog.sina.com.cn/s/blo ... -
可变参数va_list
2014-12-26 17:45 8811.要在函数中使用参数,首先要包含头文件<stdarg ... -
map注意的两个问题
2014-12-11 14:21 641代码1 void main() { ... -
关于C++ const 的全面总结<转>
2014-11-14 12:56 760C++中的const关键字的用法非常灵活,而使用const ... -
C++DLL编程详解
2014-10-08 19:44 1655DLL(Dynamic Link Library)的 ... -
C++&&QT调试时出现的一些错误
2014-10-08 15:14 787错误 原因 解决 ... -
【转】C++ function、bind以及lamda表达式
2014-09-11 09:42 880本文是C++0x系列的第四篇,主要是内容是C++0x中新增 ... -
STL函数对象及函数对象适配器【转】
2014-09-10 09:24 495一 函数对象Functor STL中提供了一元和 ... -
typedef和typename关键字[转]
2014-09-10 09:21 6911、类型说明typedef 类型说明的格式为: type ... -
C/C++中extern关键字详解[转]
2014-09-09 11:38 5061 基本解释:extern可以置于变量或者函数前,以标示变量 ... -
MYSQL在C—API 中可用的函数
2014-08-24 23:03 609mysql_affected_rows() 返 ... -
C & C++的编译
2014-08-12 09:21 519C/C++编译过程 C/C++编 ... -
C++全局变量的声明和定义
2014-08-11 20:51 440(1)编译单元(模块 ...
相关推荐
在IT领域,特别是编程技术中,使用指针数组来对字符串进行排序是一种高效且常见的方法。这种方法不仅展示了C语言的强大功能,还体现了数据结构与算法的重要性。以下是对“用指针数组的方法将字符串排序”这一知识点...
指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向
在IT领域,特别是编程技术中,使用指针数组对字符串进行排序是一个常见且实用的技巧。根据提供的代码示例,我们可以深入探讨这一知识点,包括其原理、实现过程以及实际应用。 ### 使用指针数组对字符串排序的原理 ...
本篇文章将深入探讨易语言中如何使用指针来操作字符串和数组,以及如何通过指针数组进行参数传递。 1. **指针基础**: - 在易语言中,指针是一个变量,存储的是其他变量的内存地址。指针变量需要先声明,然后通过`...
本讲将深入探讨指针数组的应用,特别是如何利用指针数组将多个字符串按照字母顺序进行排序并输出。首先,我们需要理解指针和数组的基本概念。 指针是C语言中的一个重要特性,它存储了一个变量的内存地址。通过指针...
在C语言中,指针数组是一种重要的数据结构,广泛应用于字符串处理、矩阵运算和动态存储管理等领域。本文将详细介绍指针数组的定义、使用和应用。 一、指针数组的定义 指针数组是一种特殊的数组,它的元素是指针。...
本示例涉及的是整形数组(int array)与字符数组(uchar array)之间的转换,这对于数据存储和传输具有重要意义。在Qt或VC++环境中,这种转换对于数据库交互,特别是当数据库要求特定数据格式时,尤为关键。 首先,...
本主题将深入探讨如何使用指针数组作为函数参数来显示多个字符串。指针数组结合了指针和数组的特性,使我们能够灵活地处理一系列相关的数据。 首先,我们要理解指针的基本概念。指针是一个变量,它存储的是另一个...
指针与数组区别,实验与指导-数组指针字符串 在 C++ 编程中,指针和数组是两个基本概念。指针是一种变量,它存储了另一个变量的内存地址,而数组是一组相同类型的变量的集合。 understanding the difference ...
指针数组允许你存储一组指针,每个指针可以指向不同的数组或字符串。动态内存分配则可以在运行时决定数组的大小,这对于处理不确定数量的数据特别有用。 总的来说,“C++课程-3_数组指针与字符串”将帮助你理解如何...
同时,指针数组还可以方便地进行字符串的排序、查找等操作,例如`SortString`函数就是一个例子,它接受一个字符串指针数组和数量,通过比较字符串并交换指针来对字符串进行排序。 总的来说,理解和熟练运用指针数组...
虽然字符数组和字符指针都可以用来处理字符串,但它们在内存分配、使用方式等方面存在显著差异: 1. **内存分配:** - **字符数组:** 字符数组是在栈上分配内存的。字符串内容直接存储在数组中。 - **字符指针:...
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...
在C语言中,数组、指针和字符串是基础且重要的概念,它们构成了C语言的核心特性。数组是一系列相同类型变量的集合,可以是一维、二维或多维的。数组的声明通常采用`类型名 数组名[常量表达式]`的形式,例如`int a[10...
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
在C语言中,指针、数组和字符串是编程中非常重要的概念,它们是理解C语言内存管理和数据操作的基础。下面将分别对这三个主题进行详细解释。 一、指针 1. 指针是一个存储内存地址的变量,通过指针可以间接访问和...
- **应用示例**:指针数组可以用来处理多字符串,例如对字符串进行排序。通过比较指针所指向的字符串内容,可以调整指针数组中的顺序,从而实现字符串的排序。 总结来说,C语言中的指针和字符数组是灵活且强大的...
其中,`count`表示字符串的数量,`strings`是一个指向字符串数组的指针数组。 2. **在C#中创建P/Invoke调用**: 在C#中,我们需要使用P/Invoke特性来调用C++ DLL。首先,添加`DllImport`属性来指定DLL的位置和...