`
美丽的小岛
  • 浏览: 308858 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

指针,数组名,字符串名<转>

    博客分类:
  • c
c 
阅读更多

定义:
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

分享到:
评论

相关推荐

    用指针数组的方法将字符串排序

    在IT领域,特别是编程技术中,使用指针数组来对字符串进行排序是一种高效且常见的方法。这种方法不仅展示了C语言的强大功能,还体现了数据结构与算法的重要性。以下是对“用指针数组的方法将字符串排序”这一知识点...

    指针数组为字符串排序:1、冒泡排序 2、快速排序

    指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向

    请用指针数组的方法将字符串排序

    在IT领域,特别是编程技术中,使用指针数组对字符串进行排序是一个常见且实用的技巧。根据提供的代码示例,我们可以深入探讨这一知识点,包括其原理、实现过程以及实际应用。 ### 使用指针数组对字符串排序的原理 ...

    易语言指针操作字符串和数组

    本篇文章将深入探讨易语言中如何使用指针来操作字符串和数组,以及如何通过指针数组进行参数传递。 1. **指针基础**: - 在易语言中,指针是一个变量,存储的是其他变量的内存地址。指针变量需要先声明,然后通过`...

    第5讲 指针高级之指针数组-将若干字符串按字母顺序(由小到大)输出

    本讲将深入探讨指针数组的应用,特别是如何利用指针数组将多个字符串按照字母顺序进行排序并输出。首先,我们需要理解指针和数组的基本概念。 指针是C语言中的一个重要特性,它存储了一个变量的内存地址。通过指针...

    C语言教学课件:14-3_指针数组(用于处理二维数组或多个字符串).ppt

    在C语言中,指针数组是一种重要的数据结构,广泛应用于字符串处理、矩阵运算和动态存储管理等领域。本文将详细介绍指针数组的定义、使用和应用。 一、指针数组的定义 指针数组是一种特殊的数组,它的元素是指针。...

    整形数组与字符数组相互转换

    本示例涉及的是整形数组(int array)与字符数组(uchar array)之间的转换,这对于数据存储和传输具有重要意义。在Qt或VC++环境中,这种转换对于数据库交互,特别是当数据库要求特定数据格式时,尤为关键。 首先,...

    C语言34:用指针数组作为函数的参数显示多个字符串.rar

    本主题将深入探讨如何使用指针数组作为函数参数来显示多个字符串。指针数组结合了指针和数组的特性,使我们能够灵活地处理一系列相关的数据。 首先,我们要理解指针的基本概念。指针是一个变量,它存储的是另一个...

    指针与数组区别,实验与指导-数组指针字符串

    指针与数组区别,实验与指导-数组指针字符串 在 C++ 编程中,指针和数组是两个基本概念。指针是一种变量,它存储了另一个变量的内存地址,而数组是一组相同类型的变量的集合。 understanding the difference ...

    C++课程-3_数组指针与字符串

    指针数组允许你存储一组指针,每个指针可以指向不同的数组或字符串。动态内存分配则可以在运行时决定数组的大小,这对于处理不确定数量的数据特别有用。 总的来说,“C++课程-3_数组指针与字符串”将帮助你理解如何...

    第9章 指针和数组-4指针数组及其应用 - 用指针数组表示多个字符串1

    同时,指针数组还可以方便地进行字符串的排序、查找等操作,例如`SortString`函数就是一个例子,它接受一个字符串指针数组和数量,通过比较字符串并交换指针来对字符串进行排序。 总的来说,理解和熟练运用指针数组...

    字符数组与字符指针

    虽然字符数组和字符指针都可以用来处理字符串,但它们在内存分配、使用方式等方面存在显著差异: 1. **内存分配:** - **字符数组:** 字符数组是在栈上分配内存的。字符串内容直接存储在数组中。 - **字符指针:...

    C语言用指针将字符串数组位置颠倒

    C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ

    C语言中的字符串数组和字符串指针.pdf

    在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...

    C语言:数组、指针与字符串(简易入门、精髓)

    在C语言中,数组、指针和字符串是基础且重要的概念,它们构成了C语言的核心特性。数组是一系列相同类型变量的集合,可以是一维、二维或多维的。数组的声明通常采用`类型名 数组名[常量表达式]`的形式,例如`int a[10...

    C语言中的字符串数组和字符串指针

    本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。

    指针、数组和字符串的总结

    在C语言中,指针、数组和字符串是编程中非常重要的概念,它们是理解C语言内存管理和数据操作的基础。下面将分别对这三个主题进行详细解释。 一、指针 1. 指针是一个存储内存地址的变量,通过指针可以间接访问和...

    C语言第讲指针与字符串字符数组PPT课件.pptx

    - **应用示例**:指针数组可以用来处理多字符串,例如对字符串进行排序。通过比较指针所指向的字符串内容,可以调整指针数组中的顺序,从而实现字符串的排序。 总结来说,C语言中的指针和字符数组是灵活且强大的...

    C#将字符串数组传递给C++ DLL.rar

    其中,`count`表示字符串的数量,`strings`是一个指向字符串数组的指针数组。 2. **在C#中创建P/Invoke调用**: 在C#中,我们需要使用P/Invoke特性来调用C++ DLL。首先,添加`DllImport`属性来指定DLL的位置和...

Global site tag (gtag.js) - Google Analytics