关于指针的若干思考

用变量a给出下面的定义

a) 一个整型数(An integer) 

b)一个指向整型数的指针( A pointer to an integer) 

c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r

d)一个有10个整型数的数组( An array of 10 integers) 

e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) 

f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers) 

g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) 

h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )


a)一整型数  int a;

b) 指向整型数的指针  int *a;

c) 指向指针的指针  int **a;  

d) 10个整型数的指针  int a[10];  

e) 有十个指针的数组 int *a[10];

f) 有十个整型数数组的指针  int (*a)[10];

g)  一个指向函数的指针   int (*a)(int);

h) 有十个指针的数组 指向一个函数 有一个整参  int (*a[10])(int);


1、int a;        int * p = &a;

其中int代表基类型、*代表定义的是一个指针变量、p为指针变量内部存放的是   a的地址。

2、指针变量的赋值

常见错误:* p = &a;

(错误写法:*p = a;)指针变量不能直接赋值变量。

注意上述指针赋值也是错误的。解析:a的地址赋值给了p而不是(*p)。

正确写法:

int * p = NULL;

p = &a;

*temp = *a;(传值错误)

int **p:

解释:int * *p 其中*p代表的是代表的是定义了一种指针变量 其中 p 存放的数据是int *型的数据即存放的是地址。该地址指向的是一个int 型的数据

指针与数组的关系

指针与数组常发生在函数传参的过程中。void funcation (int *p)

在该函数中,引用的指针型变量可以在主调函数中直接输入函数名来实现。一维数组的变量们代表的就是函数的首地址。

可以通过下标运算符,使得指针达到数组下标偏移的效果。也是使用p+1的实现数组的偏移。

对于二维数组

int a[3][4]

int[4] a[3]

int[4] (*a)理解的形式可看做如此,但是在语法角度的书写方式为int (*a)[4]

指针操作指针

int **p;

结构体:结构体是用来自定义类型变量的一种方式。

我们可以使用结构体来定义一个名叫student的数据类型。

其中可以存放一些基本的类型。

struct student

{

        int a;

        float b;

};

在后面的调用中struct student  s【10】 = {1 , 2.3};

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值