如何理解c和c_++的复杂类型声明
计算机C语言基础知识3篇

计算机C语言基础知识第一篇:C语言基础知识介绍C语言是一种计算机编程语言,由贝尔实验室的Dennis M. Ritchie于1972年发明。
C语言是一种结构化的、面向过程的语言,可以被用来写操作系统、编译器、驱动程序等等。
学习C语言可以帮助我们更好地理解计算机的工作原理,并且学习C语言也是学习其他编程语言的基础。
C语言的语法结构比较简单,主要由三个部分组成:数据类型、控制结构和函数。
首先,我们来介绍一下C语言中的数据类型。
C语言中的数据类型包括基本数据类型和构造数据类型。
基本数据类型包括整型、字符型、浮点型和双精度浮点型等,用于表示不同种类的数据。
构造数据类型包括数组、结构体和联合体等,可以用来表示更加复杂的数据结构。
接下来,我们来介绍C语言中常用的控制结构。
C语言中的控制结构主要有三种:分支结构、循环结构和跳转结构。
其中,分支结构主要包括if语句和switch语句,用来根据条件执行不同的代码块。
循环结构主要包括while循环、do-while 循环和for循环,用来重复执行代码块。
跳转结构包括goto语句和return语句,可以用来跳转到程序的其他部分。
最后,我们来介绍C语言中的函数。
函数是C语言中的一个重要部分,可以用来实现代码的模块化、避免重复编写等。
在C语言中,函数有返回值和无返回值两种类型,而且函数可以嵌套调用。
通过对C语言基础知识的学习,我们可以更好地掌握计算机编程的基本原理和技术手段,为以后的学习打下坚实的基础。
第二篇:C语言数据类型详解C语言中的数据类型可以分为两种:基本数据类型和构造数据类型。
基本数据类型包括整型、字符型、浮点型和双精度浮点型等,不同数据类型可以表示不同种类的数据。
第一篇介绍了基本数据类型的概念,这里我们来详细介绍一下C语言中的基本数据类型。
整型:整型数据用来表示整数,包括有符号整型和无符号整型。
有符号整型用来表示正整数、负整数和零,常用的有int、short、long和long long等;无符号整型用来表示正整数和零,常用的有unsigned int、unsigned short、unsigned long和unsigned long long等。
c代码的基本语法-解释说明

c代码的基本语法-概述说明以及解释1.引言1.1 概述C代码的基本语法是编写C程序时必须了解和掌握的基础知识。
它是C语言的基石,决定了程序的结构和功能。
在学习C编程之前,理解和掌握C代码的基本语法是非常重要的。
在本文中,我们将讨论C代码的基本语法要点,包括变量声明和定义、数据类型、运算符、控制语句以及函数的定义和调用等。
首先,变量的声明和定义是C语言中最基本的语法之一。
在使用变量之前,我们需要先声明它们的类型和名称,然后再为其分配内存空间。
C 语言中有各种数据类型可以使用,如整型、浮点型、字符型等。
其次,运算符是用于在程序中进行各种数学和逻辑操作的符号。
C语言提供了一系列的运算符,如算术运算符(加、减、乘、除等)、关系运算符(大于、小于、等于等)、逻辑运算符(与、或、非等)等。
控制语句是用于控制程序流程的语句。
在C语言中,我们可以使用条件语句(如if、else)、循环语句(如while、for)和跳转语句(如break、continue)等来实现程序的不同逻辑。
最后,函数的定义和调用是C语言中组织代码的重要方式。
函数是一组执行特定任务的语句的集合,可以在程序中被多次调用。
通过定义和调用函数,我们可以实现代码的模块化和复用。
掌握了C代码的基本语法,我们就可以开始编写简单的C程序,并逐渐提升到更复杂的项目。
C代码的基本语法不仅是理解和学习C语言的基础,也是扩展到其他编程语言的基础。
在接下来的内容中,我们将详细讨论C代码的基本语法要点,帮助读者更好地掌握和运用C语言编程。
1.2 文章结构文章结构部分的内容可以描述文章的组织方式和主要章节的内容。
内容可以参考以下示例:文章结构:本文按照以下结构来进行阐述C代码的基本语法:1. 引言:介绍C代码的基本语法的概述,文章结构和目的。
2. 正文:详细讨论C代码的基本语法的要点。
2.1 C代码的基本语法要点一:讲解C代码的变量声明和定义、数据类型、运算符等基本语法要点。
c语言的知识点,难点

C语言的知识点和难点总结C语言是一种基础编程语言,广泛应用于系统软件、嵌入式系统、游戏开发等领域。
在学习C语言的过程中,我们会遇到一些知识点和难点。
下面,我们将对C语言的知识点和难点进行总结。
一、知识点:1.数据类型:C语言支持多种数据类型,包括整型、浮点型、字符型等。
这些数据类型的使用是C语言编程的基础,需要熟练掌握。
2.运算符:C语言提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符等。
理解并正确使用这些运算符是编写高效代码的关键。
3.控制结构:C语言中的控制结构包括条件语句(如if-else)、循环语句(如for、while)等。
掌握这些控制结构是实现程序逻辑的关键。
4.函数:函数是C语言的基本模块,用于实现特定的功能。
了解如何定义函数、调用函数以及传递参数是十分重要的。
5.指针:指针是C语言的特色之一,它允许我们直接访问内存地址。
理解指针的概念和用法对于深入学习C语言至关重要。
6.结构体与联合:结构体和联合是C语言中处理复杂数据结构的重要工具。
通过它们,我们可以组合不同类型的数据并进行操作。
二、难点:1.指针操作:由于指针直接涉及内存地址,因此对初学者来说可能较难理解。
掌握指针的基本概念、声明、初始化和使用是C语言学习的难点之一。
2.内存管理:在C语言中,程序员需要直接管理内存。
如何正确地分配和释放内存是避免内存泄漏和段错误的关键,也是学习C语言的难点。
3.深度递归:深度递归可能导致栈溢出或性能问题,因此在实际应用中需要谨慎处理。
理解递归原理并在合适的场景下应用是C语言学习的一个难点。
4.多线程编程:多线程编程涉及线程的创建、同步和通信等复杂概念,对于初学者来说可能较难掌握。
理解多线程的原理和应用是多线程编程的难点之一。
c语言 数据类型缩写及含义 表格

标题:深度解析C语言数据类型缩写及含义在计算机编程的世界中,数据类型是非常重要的概念。
在C语言中,数据类型的缩写及含义更是程序员们必须熟练掌握的知识点之一。
本文将深度解析C语言中常见的数据类型缩写及其含义,帮助读者更深入地理解这一重要主题。
1. 数据类型的概念在C语言中,数据类型用来声明变量的类型,指定变量可以存储的数据类型及所占用的内存大小。
C语言中的数据类型包括基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和空类型,而派生数据类型包括数组、指针、结构体和共用体等。
2. 基本数据类型2.1 int:整型在C语言中,int代表整型数据类型,通常用于声明整数变量。
int类型在不同的系统中所占用的内存大小可能会有所不同,但通常情况下,int类型占用4个字节的内存空间。
2.2 float:单精度浮点型float代表单精度浮点型数据类型,用于声明具有小数部分的变量。
float类型通常占用4个字节的内存空间,用于存储小数,精度约为6位有效数字。
2.3 double:双精度浮点型double代表双精度浮点型数据类型,用于声明双精度小数变量。
double类型通常占用8个字节的内存空间,精度约为15位有效数字。
2.4 char:字符类型char代表字符数据类型,用于存储单个字符的变量。
char类型通常占用1个字节的内存空间。
2.5 void:空类型void代表空类型,用于表示没有类型。
通常用于函数的返回值或指针的类型。
以上是C语言中常见的基本数据类型的缩写及含义。
掌握这些基本数据类型对于程序员来说非常重要,它们是构建任何C语言程序的基础。
3. 派生数据类型3.1 数组:一组相同数据类型的集合数组是C语言中一组相同数据类型的集合,可以存储固定大小的元素。
3.2 指针:存储变量位置区域的变量指针是C语言中非常重要的概念,它用来存储变量的内存位置区域。
指针可以指向任何数据类型的变量,它可以极大地提高程序的灵活性和效率。
C语言和C++在声明和定义之间的区别是什么?

函数原型包括关于参数类型和返回值的全部信息。int f(float,char);是一个函数原型,因为它不仅介绍f这个函数的名字,而且告诉编译器这个函数有什么样的参数和返回值,使得编译器能对参数和返回值做适当的处理。C + +要求必须写出函数原型,因为它增加了一个重要的安全层。
下面是一些声明的例子。
int a; // defines a
extern const int c = 1; // defines c
int f(int x) { return x+a; } // defines f and defines x
}
extern Radio *ra;//合法,声明
//Radio ra; 非法, 可此句放到包含该头文件的源文件中
//void Radio::ilfoo(){}; 非法, 可此句放到包含该头文件的源文件中
//int Radio::s_count = 5; 非法, 可此句放到包含该头文件的源文件中
从这两个实验来看:(将两个“默认”等同起来)
int i;
std::string i;
都可以作为初始化i的定义性语句。
那么
extern int i;
extern std::string i;
也具有定义行为(这个很明显与extern的用法相悖)
在以上两个试验中:int 与 string 有“区别”吗?所有的代码都一样只不过把std::string 换成了 int而已!如果你能解释int的情况,那么我想std::string问题也就迎刃而解了!
std::string i;
//b.cpp
#include <iostream>
计算机基础知识c语言

计算机基础知识c语言C语言是一种广泛应用于计算机科学和编程领域的编程语言。
它被设计用于编写操作系统、嵌入式系统以及其他需要高性能计算的应用程序。
以下是一些关于C 语言基础知识的要点:1. 语法结构:C语言的语法结构主要由函数、变量、控制结构(如分支语句和循环语句)以及数据类型组成。
了解这些基本的语法元素对于编写有效的C程序非常重要。
2. 变量和数据类型:C语言提供了不同的数据类型,如整型、浮点型、字符型等。
在使用变量之前,需要先声明其数据类型,并为其分配内存空间。
此外,C语言还提供了一些基本的运算符,如加、减、乘、除等。
3. 控制结构:C语言支持多种控制结构,如条件语句(如if-else语句)和循环语句(如for循环和while循环)。
通过使用这些控制结构,可以根据程序的需求进行不同的判断和重复执行。
4. 函数:函数是C语言中的基本构建块之一。
函数可以接收参数和返回值,并通过将复杂的任务分解为较小的模块来提高代码的可读性和维护性。
5. 数组和指针:C语言支持数组和指针,这些数据结构对于处理大量数据或访问内存中的特定位置非常有用。
了解如何使用数组和指针可以提高程序的效率和灵活性。
6. 文件IO操作:C语言提供了使用文件进行输入和输出操作的函数。
这些函数允许你读取和写入文件,以及在程序中进行文件的操作。
7. 内存管理:C语言要求手动进行内存管理,包括动态内存分配和释放。
了解如何正确地分配和释放内存是编写高效和可靠程序的关键。
总结起来,了解C语言的基础知识对于理解计算机编程的基本概念和原理非常重要。
掌握这些基本知识将为你进一步学习和使用C语言打下坚实的基础。
学习C语言的必备知识点

学习C语言的必备知识点C语言是一门广泛应用于软件开发和系统编程的高级编程语言。
学习C语言需要掌握一些必备的知识点,才能更好地理解和应用该语言。
本文将介绍C语言学习的必备知识点,帮助读者系统地学习和掌握C语言。
一、数据类型C语言提供了多种数据类型,包括整型、浮点型、字符型和指针等。
了解不同数据类型的特点和使用方法是学习C语言的基础。
教材中会对这些数据类型进行详细的讲解和示例,并提供相应的练习题供学生练习。
二、变量与常量在C语言中,变量用于存储和表示数据,而常量则是不可改变的数据。
学习C语言需要了解如何声明和定义变量,以及如何使用常量。
这些知识点通常包括变量的命名规则、作用域、声明方式和初始化等。
三、运算符C语言提供了丰富的运算符,用于进行各种数学和逻辑运算。
学习C语言需要熟悉不同类型的运算符,如算术运算符、赋值运算符、比较运算符和逻辑运算符等。
学生需要掌握这些运算符的使用方法和优先级。
四、控制语句控制语句用于控制程序的执行流程,包括条件语句、循环语句和跳转语句等。
学习C语言需要了解不同控制语句的语法和用法,以及它们在程序中的应用场景。
通过掌握控制语句,可以编写出更加灵活和复杂的程序。
五、数组和字符串数组和字符串是C语言中常用的数据结构。
学习C语言需要了解如何声明和使用数组,以及如何进行各种数组操作。
此外,还需要了解如何使用字符串和字符串处理函数,如字符串的拼接、比较和复制等。
这些知识点对于处理文本和数据是非常重要的。
六、函数和指针函数是C语言中的重要组成部分,它封装了一些特定的功能,并可以被多次调用。
学习C语言需要了解如何声明和定义函数,以及函数的参数传递和返回值等。
指针是C语言中的另一个重要概念,它提供了对内存地址的直接访问。
学生需要了解如何声明和使用指针,以及指针和数组、指针和函数之间的关系。
七、文件操作C语言提供了一些文件操作函数,可以对文件进行读写操作。
学习C语言需要了解如何打开和关闭文件,以及如何读写文件的内容。
c语言typedef语法格式

C语言typedef语法格式1. 介绍C语言是一种广泛应用的编程语言,它具有强大的功能和灵活的语法结构。
在C语言中,typedef是一种非常重要的关键字,它可以用来为已有的数据类型定义一个新的名字,这样可以增加代码的可读性和易用性。
本文将对C语言typedef的语法格式进行详细介绍,帮助读者更好地理解并应用typedef关键字。
2. typedef的基本语法在C语言中,使用typedef关键字可以为已有的数据类型定义一个新的名字。
其基本语法格式如下:```ctypedef 已有的数据类型新的数据类型名;```其中,已有的数据类型可以是基本的数据类型,也可以是自定义的结构体、共用体或枚举类型。
新的数据类型名可以是任何合法的标识符,用来代表已有数据类型的别名。
3. typedef关键字的作用通过使用typedef关键字,可以为已有的数据类型定义一个新的名字,这样可以使代码更加清晰易懂。
typedef还可以简化复杂数据类型的声明,提高代码的可维护性和可读性。
typedef还可以帮助程序员更好地进行数据类型的抽象和封装,使代码更加模块化和独立。
4. typedef与数据类型的关系在C语言中,typedef关键字和已有的数据类型之间存在着紧密的关系。
通过typedef,可以为已有的数据类型定义一个新的名字,从而使得程序中可以使用这个新的名字来表示已有的数据类型。
这样可以提高代码的可读性和易用性,减少相同数据类型的重复声明,使代码更加简洁和清晰。
5. typedef的使用方法在C语言中,使用typedef关键字可以有多种不同的方法。
可以使用typedef来定义结构体的新名字,以及为指针类型定义新名字。
下面分别介绍这两种常见的使用方法:5.1 定义结构体的新名字结构体是C语言中一种重要的数据类型,它可以用来表示复杂的数据结构。
通过使用typedef,可以为结构体定义一个新的名字,从而简化结构体的声明和使用。
其基本语法格式如下:```ctypedef struct 原结构体名新结构体名;```通过这种方式,就可以为原结构体定义一个新的名字,以便在程序中使用新的名字表示该结构体类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何理解c和c ++的复杂类型声明曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。
我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。
需要强调一下的是,复杂的C/C++声明并不是好的编程风格;我这里仅仅是教你如何去理解这些声明。
注意:为了保证能够在同一行上显示代码和相关注释,本文最好在至少1024x768分辨率的显示器上阅读。
让我们从一个非常简单的例子开始,如下:这个应该被理解为“declare n as an int”(n是一个int型的变量)。
接下去来看一下指针变量,如下:这个应该被理解为“declare p as an int *”(p是一个int *型的变量),或者说p是一个指向一个int型变量的指针。
我想在这里展开讨论一下:我觉得在声明一个指针(或引用)类型的变量时,最好将*(或 &)写在紧靠变量之前,而不是紧跟基本类型之后。
这样可以避免一些理解上的误区,比如:再来看一个指针的指针的例子:理论上,对于指针的级数没有限制,你可以定义一个浮点类型变量的指针的指针的指针的指针,再来看如下的声明:这里,p被声明为一个包含5个元素(int类型的指针)的数组。
另外,我们还可以在同一个声明中混合实用*和&,如下:注:p1是一个int类型的指针的指针;p2是一个int类型的指针的引用;p3是一个int类型引用的指针(不合法!);p4是一个int类型引用的引用(不合法!)。
const修饰符当你想阻止一个变量被改变,可能会用到const关键字。
在你给一个变量加上const修饰符的同时,通常需要对它进行初始化,因为以后的任何时候你将没有机会再去改变它。
例如:上述两个变量n和m其实是同一种类型的——都是const int(整形恒量)。
因为C++标准规定,const关键字放在类型或变量名之前等价的。
我个人更喜欢第一种声明方式,因为它更突出了const修饰符的作用。
当const与指针一起使用时,容易让人感到迷惑。
例如,我们来看一下下面的p和q的声明:他们当中哪一个代表const int类型的指针(const直接修饰int),哪一个代表int类型的const指针(const直接修饰指针)?实际上,p和q都被声明为const int类型的指针。
而int类型的const指针应该这样声明:这里,p和q都是指向const int类型的指针,也就是说,你在以后的程序里不能改变*p的值。
而r是一个const指针,它在声明的时候被初始化指向变量n (即r=&n;)之后,r的值将不再允许被改变(但*r的值可以改变)。
组合上述两种const修饰的情况,我们来声明一个指向const int类型的const 指针,如下:下面给出的一些关于const的声明,将帮助你彻底理清const的用法。
不过请注意,下面的一些声明是不能被编译通过的,因为他们需要在声明的同时进行初始化。
为了简洁起见,我忽略了初始化部分;因为加入初始化代码的话,下面每个声明都将增加两行代码。
注: p1是指向char类型的指针的指针;p2是指向const char类型的指针的指针;p3是指向char类型的const指针;p4是指向const char类型的const指针;p5是指向char类型的指针的const指针;p6是指向const char类型的指针的const指针;p7是指向char类型const指针的const指针;p8是指向const char类型的const指针的const指针。
typedef的妙用typedef给你一种方式来克服“*只适合于变量而不适合于类型”的弊端。
你可以如下使用typedef:这里的p和q都被声明为指针。
(如果不使用typedef,q将被声明为一个char 变量,这跟我们的第一眼感觉不太一致!)下面有一些使用typedef的声明,并且给出了解释:typedef 经常用在一个结构声明之前,如下。
这样,当创建结构变量的时候,允许你不使用关键字struct(在C中,创建结构变量时要求使用struct关键字,如 struct tagPOINT a;而在C++中,struct可以忽略,如tagPOINT b)。
函数指针函数指针可能是最容易引起理解上的困惑的声明。
函数指针在DOS时代写TSR 程序时用得最多;在Win32和X-Windows时代,他们被用在需要回调函数的场合。
当然,还有其它很多地方需要用到函数指针:虚函数表,STL中的一些模板,Win NT/2K/XP系统服务等。
让我们来看一个函数指针的简单例子:这里p被声明为一个函数指针,这个函数带一个char类型的参数,并且有一个int类型的返回值。
另外,带有两个float类型参数、返回值是char类型的指针的指针的函数指针可以声明如下:那么,带两个char类型的const指针参数、无返回值的函数指针又该如何声明呢?参考如下:“右左法则”是一个简单的法则,但能让你准确理解所有的声明。
这个法则运用如下:从最内部的括号开始阅读声明,向右看,然后向左看。
当你碰到一个括号时就调转阅读的方向。
括号内的所有内容都分析完毕就跳出括号的范围。
这样继续,直到整个声明都被分析完毕。
对上述“右左法则”做一个小小的修正:当你第一次开始阅读声明的时候,你必须从变量名开始,而不是从最内部的括号。
下面结合例子来演示一下“右左法则”的使用。
阅读步骤:1. 从变量名开始——fp12. 往右看,什么也没有,碰到了),因此往左看,碰到一个*——一个指针3. 跳出括号,碰到了(int)——一个带一个int参数的函数4. 向左看,发现一个*——(函数)返回一个指针5. 跳出括号,向右看,碰到[10]——一个10元素的数组6. 向左看,发现一个*——指针7. 向左看,发现int——int类型总结:fp1被声明成为一个函数的指针,该函数返回指向指针数组的指针. 再来看一个例子:阅读步骤:1. 从变量名开始——arr2. 往右看,发现是一个数组——一个5元素的数组3. 向左看,发现一个*——指针4. 跳出括号,向右看,发现()——不带参数的函数5. 向左看,碰到*——(函数)返回一个指针6. 跳出括号,向右发现()——不带参数的函数7. 向左,发现*——(函数)返回一个指针8. 继续向左,发现int——int类型还有更多的例子:我眼中的指针这篇文章摘自网易广州社区的C语言版精华区。
作者girlrong(阿蓉)是以前C语言版版主,她乐于助人,虚心诚恳,颇受网友欢迎。
只可惜现在已退隐江湖了。
--------------------------------------------------------------------------------为初学者服务。
这是我的帖子的宗旨。
我也是个初学者(强调了无数遍了),我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。
由于小学时语文没学好,所以竭尽全力也未必能达到这个目的。
尽力而为吧。
指针是c和c++中的难点和重点。
我只精通dos下的basic。
c语言的其它各种特性,在basic中都有类似的东西。
只有指针,是baisc所不具备的。
指针是c的灵魂。
我不想重复大多数书上说得很清楚的东西,我只是把我看过的书中说得不清楚或没有说,而我又觉得我理解得有点道理的东西写出来。
我的目的是:1。
通过写这些东西,把我脑袋中关于c的模糊的知识清晰化。
2。
给初学者们一点提示。
3。
赚几个经验值。
(因为贴这些东西没有灌水之嫌啊)第一章。
指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。
让我们分别说明。
先声明几个指针放着做例子:例一:(1)int *ptr;(2)char *ptr;(3)int **ptr;(4)int (*ptr)[3];(5)int *(*ptr)[4];如果看不懂后几个例子的话,请参阅我前段时间贴出的文?lt;<如何理解c和c ++的复杂类型声明>>。
1。
指针的类型。
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。
这是指针本身所具有的类型。
让我们看看例一中各个指针的类型:(1)int *ptr; //指针的类型是int *(2)char *ptr; //指针的类型是char *(3)int **ptr; //指针的类型是int **(4)int (*ptr)[3]; //指针的类型是int(*)[3](5)int *(*ptr)[4]; //指针的类型是int *(*)[4]怎么样?找出指针的类型的方法是不是很简单?2。
指针所指向的类型。
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
例如:(1)int *ptr; //指针所指向的类型是int(2)char *ptr; //指针所指向的的类型是char(3)int **ptr; //指针所指向的的类型是int *(4)int (*ptr)[3]; //指针所指向的的类型是int()[3](5)int *(*ptr)[4]; //指针所指向的的类型是int *()[4]在指针的算术运算中,指针所指向的类型有很大的作用。
指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。
当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。
我看了不少书,发现有些写得差的书中,就把指针的这两个概念搅在一起了,所以看起书来前后矛盾,越看越糊涂。
3。
指针的值,或者叫指针所指向的内存区或地址。
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。
在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。
指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。
以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。