第五章 指针:指针是C语言中一个重要的知识点,和其他的基本数据类型不同,指针是一种特殊的变量类型,指针变量所存储的是指定变量的地址。利用指针,可以直接找到在电脑存储器中对应地址所保存的值。由于指针的这种特性,使得指针可以直接操作计算机的存储器。c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。通过指针,我们可以完成原本无法完成的一些工作。正确的使用指针,可以是程序更为简洁紧凑,高效灵活。在本章中,我们学习指针的概念,定义,以及指针的简单应用。更重要的是我们学习指针作为函数参数时的特性,可以有效的解决函数返回值只能是一个的限制。最后,我们结合之前所学的数组,了解和掌握指针和一维数组、二维数组之间的关系。下面让我们进入指针的世界。5.1指针及简单应用:指针在C语言中占有重要的地位,我们在这一小节中,学习如何指针的含义,以及在C语言中如何定义一个指针,如何对指针进行初始化,最重要的是如何利用间接寻址运算符来应用一个指针。
5.2指针变量作为函数参数:指针最为重要的应用就是作为函数参数。当一个函数的形参为一个指针类型的时候,传递的往往是一个变量的地址,这就涉及到了C语言中一个重要的应用--按引用传递。我们在之前学习函数的时候,曾经像函数传递过数组,从某一方面来讲,指针作为函数参数和数组作为函数参数相似,都是一种按引用传递方式,这种方式传递过来的变量,在函数内对其进行的修改,往往是直接修改内存中的值,在函数外面,该地址所指向的变量的值也会发生变化。在本小节中,我们详细的介绍按值传递和按引用传递的区别。
5.3指针和一维数组:我们在学习数组的时候曾经了解过,数组名从一方面来讲,代表着这个数组的首地址。数组的这个特性,让我们将其和指针联系到一起去。在本小节中,我们通过指针和数组名的比较,详细的讲述了指针在一维数组当中的应用,如何用指针来操作一个数组。
5.4指针和二维数组:数组除了有一维数组以外,还有二维数组,在C语言中,二维数组名仍然代表着这个数组的首地址,那么也就意味着我们也可以用指针来表示一个二维数组。在本小节中,我们详细的讲述了关于指针在二维数组当中的应用,包括指针的行地址、列地址、行指针以及列指针。
[单选题]

假设有下面定义语句:float a[10];float *p=a;则p++相当于是加上()个字节 

选项:[sizeof(float), 1, sizeof(a), sizeof(float*)]
[单选题]以下哪个定义中的p不是指针,请选择恰当的选项( ):

选项:[char **p;, char (*p)[10];, 给出的三项中,p都是指针, char *p[6];]
[单选题]下面程序的运行结果是()。
#include<stdio.h>
int main(void)
{  
     int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;
     p = x;
     pp = &p;
     printf(“%d ”, *(p++));
     printf(”%d”, **pp);
     return 0;
}

选项:[4 6, 2 4, 4 4, ]
[单选题]对于如下说明,语法和语义都正确的赋值是_____。int c, *s, a[]={1, 3, 5};

选项:[c=*s;, s[0]=a[0];, c=a;, s=&a[1];]
[单选题]若已定义int num[10];,则下面表达式中不表示num[1]的地址的是()。

选项:[num+1, &num[1], num++, &num[0]+1]
[单选题]如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。

选项:[m = **p;, , m = &n;, *p = *&n;]
[单选题]已有如下代码:
char a[5],*p=a;则下面选项中正确的赋值语句是()

选项:[p=“abcd”, *p=“abcd”, a=“abcd”, *a=“abcd”]
[单选题]以下程序的运行结果是()
#include <stdio.h>
sub (int x,int y,int *z)
{
   *z=y-x;

int main ( )
{    
   int a,b;
   sub(10,5,&a);
   sub(7,a,&b);   
   printf("%d,%d",a,b);
   return 0;
}

选项:[5, 2, -5, -12, 5, -2, -5,-2]
[单选题]以下程序的执行结果是( )。int main(){  int a, b, k = 4, m = 6, * p1 = &k, * p2= &m;  a = p1 == &m;  b = (-*p1)/(*p2) + 7;  printf("%d, %d", a, b);  return 0;}

选项:[-1, 7, 0, 5, 1, 5, 0, 7]
[单选题]若有定义:int *p[3]; 则以下叙述中正确的是( )。

选项:[定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素, 定义了一个名为*p的整型数组,该数组含有三个int类型元素, 定义了一个基类型为int的指针变量p,该变量具有三个指针, 定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针]

温馨提示支付 ¥1.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部