指针详解!很好的一篇学习指针的文章范文

合集下载

第8章 指针及其应用

第8章  指针及其应用

【说明】 ①、直接拿 a 当指针用,a 指向数组的开始元素,a+i 是指向数组的第 i 个元素的指针。 ②、指针变量 pa 是变量,可以变的。但数组 a 是静态的变量名,不可变,只能当做常 量指针使用。例如:p=p+2;是合法的,a=a+2;是非法的。 ③、 最早在使用标准输入 scanf 时就使用了指针技术, 读入一个变量时要加取地址运算 符’&’传递给 scanf 一个指针。对于数组,可以直接用数组名当指针。
4、多重指针
既然指针是指向其他类型的,指针本身也是一种类型。 C++允许递归地指针指向指针的指针——多重指针。 【例 4】双重指针运用举例。 #include<cstdio> using namespace std; int a=10; int *p; int **pp; //定义双重指针 int main() { p=&a; //将 p 指向 a pp=&p; //将 pp 指向 p printf("%d=%d=%d\n",a,*p,**pp); //**pp 通过 2 次间接访问了 a 的变量的值 10 return 0; } 输出: 10=10=10 【说明】 多重指针除了可以多次“间接”访问数据,OI 上主要的应用是动态的多维数组,这个 强大的功能将在后面专门介绍。
第八章
指针及其应用
指针是 C++语言中广泛使用的一种数据类型,运用指针编程是 C++语言最主要风格之 一。利用指针变量可以表示各种数据结构,能很方便地使用数组和字符串,并能像汇编语言 一样处理内存地址,从而编出精炼而高效的程序,指针极大地丰富了 C++语言的功能。学习 指针是学习 C++语言最重要的一环,能否正确理解和使用指针是我们是否掌握 C++语言的一 个标志。 同时, 指针也是 C++语言中最为困难的一部分, 在学习中除了要正确理解基本概念, 还必须要多编程、多上机调试,只要做到这些,指针也是不难掌握的。

指针例题经典

指针例题经典

指针例题经典一、指针例题经典嘿,宝子们!今天咱们来唠唠那些超经典的指针例题。

指针这玩意儿啊,就像一把神奇的小钥匙,能打开好多编程世界里的小秘密呢。

你看啊,有这么一道例题。

就是定义一个整型数组,然后用指针去遍历这个数组,找出数组里的最大值。

这就像是在一群小伙伴里找那个最高的人一样。

咱们先定义一个数组,就像这样:int arr[] = {1, 5, 3, 7, 2};然后再定义一个指针,让这个指针指向这个数组的开头,就像给小侦探指了个路,让他从这儿开始找。

这个指针的定义呢,就是int p = arr; 然后呢,小指针就开始它的旅程啦。

它从数组的第一个元素开始,一个一个地看,和后面的元素比较。

要是后面的元素比它指向的元素大,那就让指针指向这个更大的元素。

最后呢,这个指针指向的就是数组里最大的元素啦。

还有一道题也很有意思。

是关于函数指针的。

函数指针就像是一个超级快递员,它能把函数这个大包裹送到你想要的地方。

比如说,有一个函数是用来计算两个数的和的,函数原型是int add(int a, int b)。

那我们要定义一个函数指针来指向这个函数,就像这样:int (fp)(int, int) = add; 然后呢,我们就可以通过这个函数指针来调用这个函数啦,就像fp(3, 5);这样就会得到8。

这是不是超级酷呢?再讲讲指针和结构体的例题。

结构体就像是一个小盒子,里面可以装好多不同类型的东西。

比如说,有一个结构体是用来表示一个学生的信息的,里面有学生的姓名、年龄和成绩。

我们可以定义一个结构体类型:struct student {char name[20];int age;float score;};然后我们定义一个结构体变量,再用指针指向这个结构体变量。

这个指针就可以用来访问结构体里的各个成员啦。

就像我们要访问学生的年龄,就可以用指针->age这样的形式。

这就像打开小盒子,拿出里面特定的东西一样。

指针例题真的很有趣,就像一个个小谜题一样。

指针函数的定义及用法

指针函数的定义及用法

指针函数的定义及用法指针函数是C语言中非常重要的概念之一、了解指针函数的定义及使用方法,对于理解C语言的高级特性和编程技巧非常有帮助。

本文将详细介绍指针函数的概念、定义、使用方法及示例。

一、指针函数的概念:指针函数是指返回值类型为指针类型(即地址类型)的函数。

它可以在函数内部动态地分配内存空间,并通过返回指针来传递该内存空间的地址。

与普通函数不同的是,指针函数的返回值是一个地址,而不是一个具体的数值或变量。

二、指针函数的定义:指针函数可以被定义为任何类型的数据的指针。

例如,int *func(表示一个返回整型指针的函数。

在函数内部,我们可以使用malloc函数来动态分配内存,并将结果指针返回给调用者。

三、指针函数的使用方法:1.定义指针函数:首先需要确定指针函数要返回的数据类型,然后在函数声明中使用*符号来表示返回一个指针。

例如,int *func(表示返回一个整型指针的函数。

2. 在函数内部创建动态内存空间:使用malloc函数来为指针函数分配内存,确保返回的指针指向有效的内存空间。

例如,int *p = (int *)malloc(sizeof(int))可以创建一个整型指针p,并分配一个整型变量的内存空间。

3.返回指针:将创建的内存空间的指针返回给调用者。

例如,return p;表示将指针p返回给调用者。

4.使用指针函数:调用指针函数的方式与普通函数相同。

例如,int *ptr = func(表示调用func函数,并将返回的指针赋值给指针变量ptr。

四、指针函数的示例:下面是一个简单的示例,演示了如何使用指针函数。

```#include <stdio.h>#include <stdlib.h>int *createArray(int size)int *arr = (int *)malloc(sizeof(int) * size); // 动态分配内存int i;for (i = 0; i < size; i++)arr[i] = i; // 初始化数组元素}return arr; // 返回数组首地址void printArray(int *arr, int size)int i;for (i = 0; i < size; i++)printf("%d ", arr[i]); // 打印数组元素}int maiint *arr = createArray(5); // 调用指针函数创建数组printArray(arr, 5); // 打印数组free(arr); // 释放内存return 0;```在上面的示例中,createArray函数动态分配了一个包含5个整型元素的数组,并返回数组的首地址。

c语言指针详细讲解

c语言指针详细讲解

c语言指针详细讲解
C 语言中指针是非常强大的概念,它允许程序直接访问内存中的数据。

指针在 C 语言中最初是被用于解决内存分配问题而提出的,随着 C 语言的发展,指针也变得愈发重要。

指针的本质是一个存储变量地址的变量。

在 C 语言中,指针通常用符号&来表示,例如&x 表示的是 x 变量的地址。

指针变量存储的是一个内存地址,当程序读取指针变量时,它会读取该地址中存储的数据。

C 语言中可以使用指针进行高效的内存操作。

例如,当程序需要对一个数组元素进行修改时,可以直接用指针修改该元素的值,而不必修改数组名本身。

另外,指针还可以用于动态分配内存,这是 C 语言中一个重要的特性。

指针的使用方法比较灵活,但也需要小心使用。

如果不小心处理指针,可能会导致未知的错误。

例如,当指针指向的内存空间被释放后,程序试图访问该内存空间时可能会导致未定义的行为。

因此,在C 语言中,指针的使用需要更加谨慎。

C 语言中指针是一个非常重要和强大的概念,掌握指针的使用方法可以让程序员写出更加高效和安全的代码。

c语言 指针的指针 用法详解

c语言 指针的指针 用法详解

c语言指针的指针用法详解在C语言中,指针是非常重要的一种数据类型。

而指针的指针是指指向指针变量的指针。

它在C语言中也是非常重要的一种数据类型,经常用于动态内存分配和函数传递参数等方面。

下面,我们来详细介绍一下指针的指针在C语言中的用法。

一、指针的基本概念在C语言中,指针是一个变量,用来表示另一个变量的内存地址。

指针变量可以存储任何数据类型的地址,包括整型、字符型、浮点型等。

使用指针可以实现动态内存分配、函数传递参数等功能。

二、指针的指针的概念指针的指针是指指向指针变量的指针。

它的定义方式如下:```int **p;```其中,p是一个指向指针的指针变量,它可以指向一个指针变量的地址。

三、指针的指针的用法指针的指针在C语言中有很多用途,下面列举几个比较常见的用法。

1.动态内存分配在C语言中,可以使用malloc函数动态分配内存,该函数返回的是一个指向分配内存的首地址的指针。

而在一些情况下,需要动态分配二维数组或者指针数组,这时就需要使用指针的指针了。

例如:```int **p;int i,j;p=(int **)malloc(sizeof(int*)*3);//分配3个指向int类型指针的指针变量for(i=0;i<3;i++){p[i]=(int*)malloc(sizeof(int)*4);//分配4个int类型的变量}for(i=0;i<3;i++){for(j=0;j<4;j++){p[i][j]=i*j;//为p[i][j]赋值}}```上述代码中,先使用malloc函数分配3个指向int类型指针的变量,然后再用循环分别为这3个变量分配4个int类型的变量。

最后,再使用嵌套循环为二维数组赋值。

2.函数传递参数在C语言中,函数可以通过指针传递参数。

指针的指针也可以用于函数传递参数,可以使函数返回多个值。

例如:```void fun(int **p){*p=(int*)malloc(sizeof(int)*4);//为指针p分配4个int类型的变量(*p)[0]=10;(*p)[1]=20;(*p)[2]=30;(*p)[3]=40;}int main(){int *p;fun(&p);//传递p的地址printf("%d %d %d %d\n",p[0],p[1],p[2],p[3]);free(p);//释放内存return 0;}```上述代码中,定义了一个指针类型的函数fun,在函数中通过指针的指针为指针p分配4个int类型的变量,并为这4个变量赋值。

c语言指针教学中的知识点分析与总结

c语言指针教学中的知识点分析与总结

c语言指针教学中的知识点分析与总结c语言指针教学中的知识点分析与总结本文对c语言指针的教学进行了探讨和总结。

要想真正的掌握c 语言的指针,首先必须要对它有全面深刻的认识。

因为它是c语言的基础,只有将指针的知识学好,才能够更好地学习后续的课程。

下面小编给大家介绍一下关于c语言指针的知识。

一、 c语言中指针的定义指针是一种特殊的数据类型,也称为引用类型。

所谓指针就是指向一个地址的变量,例如: int a[10];二、变量指针及指针变量1.1 c语言中的变量。

变量是存储在计算机中的二进制数值,当我们需要使用时,必须创建一个变量并赋予它相应的值,然后将变量的地址传递给外部的一个或多个对象,这样外部对象通过访问内部变量来使用其中存储的信息,而且可以保证外部对象不会越界。

1.2指针变量是变量的一种特殊形式,指针变量在内存中占有一块区域,可以指向一个地址,这个地址的值是这个变量所代表的值,这样方便变量间的传递。

例如: char *a[10];2.1指针操作符2.2指针数组,它的作用和一维数组相同,即具有一维数组的特点,也具有二维数组的特点,三者最明显的区别就是二维数组中元素个数是固定的,而一维数组中元素个数是可变的。

2.3指针的运算规则。

在指针变量的操作中,要遵循以下运算规则:原地址→指针地址。

例如: char * a[10]; 2.4 c语言中的const指针常量是一种特殊的指针常量, const不是一种变量的标准类型,它专门用于指向一个const指针。

2.3指针的运算规则。

在指针变量的操作中,要遵循以下运算规则:原地址→指针地址。

例如: char *a[10];2.4指针的定义与使用:所谓指针就是指向一个地址的变量,例如: int a[10]; 2.4指针的定义与使用: pointer, pointer-pointer,and-and-and。

所以,当我们在一个字符串中出现pointer,pointer-pointer, and-and-and的时候,就表示它指向一个地址。

c语言指针实验总结

c语言指针实验总结

c语言指针实验总结《c语言指针实验总结》在学习C语言的过程中,指针是一个非常重要的概念。

为了更好地掌握指针的用法和理解其工作原理,我进行了一系列的实验。

在这篇总结中,我将分享我在实验中所学到的知识和经验。

首先,我进行了一个基本的指针实验,用于了解指针的定义和初始化。

我定义了一个整型变量,并通过指针将其地址赋给另一个指针变量。

然后,我通过对指针变量进行修改,来改变原始变量的值。

这个实验帮助我深入理解了指针是如何通过引用和修改地址来操作变量的。

接下来,我进行了一个指针数组的实验。

我创建了一个包含多个整型变量的数组,并定义了一个指向数组的指针。

通过对指针进行加减操作,我可以访问数组中的不同元素。

这个实验展示了指针和数组之间的密切关系,并帮助我更好地理解了C语言中数组的原理。

我还进行了一个指针和函数的实验。

我定义了一个带有指针参数的函数,并在主函数中调用了这个函数。

通过传递指针作为参数,我可以实现对变量的直接修改,而不需要通过返回值来传递结果。

这个实验使我意识到使用指针参数可以提高程序的效率和灵活性。

最后,我进行了一个动态内存分配的实验。

我使用malloc函数动态地分配了一块内存,并通过指针进行访问和操作。

通过释放内存,我可以避免内存泄漏问题。

这个实验教会了我如何使用指针来管理内存,确保程序的健壮性和效率。

通过这些实验,我对C语言中的指针有了更深入的理解。

指针在C语言中扮演着重要的角色,掌握了指针的使用技巧和原理,能够提高程序的效率和功能。

我相信通过不断实践和学习,我的指针技能将得到进一步的提升。

c语言中的指针详解

c语言中的指针详解

c语言中的指针详解在C语言中,指针是一种特殊的变量类型,它存储了一个变量的内存地址。

通过指针,我们可以间接访问和修改内存中的数据,这对于一些需要动态分配内存的操作非常有用。

以下是关于C语言指针的一些详细解释:1. 定义指针:使用"*"符号来定义指针变量。

例如,int* ptr; 定义了一个指向整型变量的指针 ptr。

2. 取址操作符(&):取地址操作符(&)用于获取变量的内存地址。

例如,&a 返回变量 a 的地址。

3. 解引用操作符(*):解引用操作符(*)用于访问指针所指向的变量的值。

例如,*ptr 返回指针 ptr 所指向的整型变量的值。

4. 动态内存分配:可以使用相关的库函数(如malloc和calloc)在运行时动态分配内存。

分配的内存可以通过指针来访问和使用,并且在使用完后应该使用free函数将其释放。

5. 空指针:空指针是一个特殊的指针值,表示指针不指向任何有效的内存地址。

可以将指针初始化为NULL来表示空指针。

6. 指针和数组:指针和数组在C语言中有密切的关系。

可以通过指针来访问数组元素,并且可以使用指针进行指针算术运算来遍历数组。

7. 传递指针给函数:可以将指针作为函数参数传递,以便在函数内部修改实际参数的值。

这种传递方式可以避免拷贝大量的数据,提高程序的效率。

8. 指针和字符串:字符串在C语言中实际上是以字符数组的形式表示的。

可以使用指针来访问和操作字符串。

需要注意的是,指针在使用时需要小心,因为不正确的操作可能导致程序崩溃或产生不可预料的结果。

对于初学者来说,理解指针的概念和使用方法可能需要一些时间和练习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章。

指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。

让我们分别说明。

先声明几个指针放着做例子:例一:(1)int *ptr;(2)char *ptr;(3)int **ptr;(4)int (*ptr)[3];(5)int *(*ptr)[4];如果看不懂后几个例子的话,请参阅我前段时间贴出的文章<<如何理解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为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。

指针所指向的内存区和指针所指向的类型是两个完全不同的概念。

在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。

以后,每遇到一个指针,都应该问问:这个指针的类型是什么?指针指向的类型是什么?该指针指向了哪里?4。

指针本身所占据的内存区。

指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。

在32位平台里,指针本身占据了4个字节的长度。

指针本身占据的内存这个概念在判断一个指针表达式是否是左值时很有用。

第二章。

指针的算术运算指针可以加上或减去一个整数。

指针的这种运算的意义和通常的数值的加减运算的意义是不一样的。

例如:例二:1。

char a[20];2。

int *ptr=a;......3。

ptr++;在上例中,指针ptr的类型是int*,它指向的类型是int,它被初始化为指向整形变量a。

接下来的第3句中,指针ptr被加了1,编译器是这样处理的:它把指针ptr的值加上了sizeof(int),在32位程序中,是被加上了4。

由于地址是用字节做单位的,故ptr所指向的地址由原来的变量a的地址向高地址方向增加了4个字节。

由于char类型的长度是一个字节,所以,原来ptr是指向数组a的第0号单元开始的四个字节,此时指向了数组a中从第4号单元开始的四个字节。

我们可以用一个指针和一个循环来遍历一个数组,看例子:例三:int array[20];int *ptr=array;...//此处略去为整型数组赋值的代码。

...for(i=0;i<20;i++)(*ptr)++;ptr++;}这个例子将整型数组中各个单元的值加1。

由于每次循环都将指针ptr加1,所以每次循环都能访问数组的下一个单元。

再看例子:例四:1。

char a[20];2。

int *ptr=a;......3。

ptr+=5;在这个例子中,ptr被加上了5,编译器是这样处理的:将指针ptr的值加上5乘sizeof(int),在32位程序中就是加上了5乘4=20。

由于地址的单位是字节,故现在的ptr所指向的地址比起加5后的ptr所指向的地址来说,向高地址方向移动了20个字节。

在这个例子中,没加5前的ptr指向数组a的第0号单元开始的四个字节,加5后,ptr已经指向了数组a的合法范围之外了。

虽然这种情况在应用上会出问题,但在语法上却是可以的。

这也体现出了指针的灵活性。

如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr的值是被减去5乘sizeof(int),新的ptr指向的地址将比原来的ptr所指向的地址向低地址方向移动了20个字节。

总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。

ptrnew的值将比ptrold的值增加了n乘sizeof(ptrold 所指向的类型)个字节。

就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向高地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。

一个指针ptrold减去一个整数n后,结果是一个新的指针ptrnew,ptrnew 的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。

ptrnew的值将比ptrold的值减少了n乘sizeof(ptrold所指向的类型)个字节,就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向低地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。

第三章。

运算符&和*这里&是取地址运算符,*是...书上叫做“间接运算符”。

&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址嘛,那就是a的地址。

*p的运算结果就五花八门了。

总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。

例五:int a=12;int b;int *p;int **ptr;p=&a;//&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址是a的地址。

*p=24;//*p的结果,在这里它的类型是int,它所占用的地址是p所指向的地址,显然,*p就是变量a。

ptr=&p;//&p的结果是个指针,该指针的类型是p的类型加个*,在这里是int**。

该指针所指向的类型是p的类型,这里是int*。

该指针所指向的地址就是指针p自己的地址。

*ptr=&b;//*ptr是个指针,&b的结果也是个指针,且这两个指针的类型和所指向的类型是一样的,所以?amp;b 来给*ptr赋值就是毫无问题的了。

**ptr=34;//*ptr的结果是ptr所指向的东西,在这里是一个指针,对这个指针再做一次*运算,结果就是一个int 类型的变量。

第四章。

指针表达式。

一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。

下面是一些指针表达式的例子:例六:int a,b;int array[10];int *pa;pa=&a;//&a是一个指针表达式。

int **ptr=&pa;//&pa也是一个指针表达式。

*ptr=&b;//*ptr和&b都是指针表达式。

pa=array;pa++;//这也是指针表达式。

例七:char *arr[20];char **parr=arr;//如果把arr看作指针的话,arr也是指针表达式char *str;str=*parr;//*parr是指针表达式str=*(parr+1);//*(parr+1)是指针表达式str=*(parr+2);//*(parr+2)是指针表达式由于指针表达式的结果是一个指针,所以指针表达式也具有指针所具有的四个要素:指针的类型,指针所指向的类型,指针指向的内存区,指针自身占据的内存。

好了,当一个指针表达式的结果指针已经明确地具有了指针自身占据的内存的话,这个指针表达式就是一个左值,否则就不是一个左值。

在例七中,&a不是一个左值,因为它还没有占据明确的内存。

*ptr是一个左值,因为*ptr这个指针已经占据了内存,其实*ptr就是指针pa,既然pa已经在内存中有了自己的位置,那么*ptr当然也有了自己的位置。

第五章。

数组和指针的关系如果对声明数组的语句不太明白的话,请参阅我前段时间贴出的文章<<如何理解c和c++的复杂类型声明>>。

数组的数组名其实可以看作一个指针。

看下例:例八:int array[10]={0,1,2,3,4,5,6,7,8,9},value;......value=array[0];//也可写成:value=*array;value=array[3];//也可写成:value=*(array+3);value=array[4];//也可写成:value=*(array+4);上例中,一般而言数组名array代表数组本身,类型是int [10],但如果把array看做指针的话,它指向数组的第0个单元,类型是int *,所指向的类型是数组单元的类型即int。

因此*array等于0就一点也不奇怪了。

同理,array+3是一个指向数组第3个单元的指针,所以*(array+3)等于3。

其它依此类推。

例九:char *str[3]={"Hello,this is a sample!","Hi,good morning.","Hello world"};char s[80];strcpy(s,str[0]);//也可写成strcpy(s,*str);strcpy(s,str[1]);//也可写成strcpy(s,*(str+1));strcpy(s,str[2]);//也可写成strcpy(s,*(str+2));上例中,str是一个三单元的数组,该数组的每个单元都是一个指针,这些指针各指向一个字符串。

相关文档
最新文档