今日刷题任务之预编译、各种类型的指针以及右左原则

20 篇文章 0 订阅
8 篇文章 0 订阅

目录

1.什么是预编译,何时需要预编译:

2.下述三个有什么区别?

1)char * const p; //常量指针,p的值不可以修改(地址不可以修改),但是指向的内容可以修改

2)char const * p;//指向常量的指针,指向的常量值不可以改  

3)const char *p;

3.右左法则:认识不同的指针


1.什么是预编译,何时需要预编译:

预编译:为了增加编译速度往往要提前对一些头文件及代码进行编,然后给后正式编译时使用,以节省开销。

比如头文件:#include<stdio.h>

宏定义:#define MAX 10

1)总是使用不经常改动的大型代码体。

2)程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

2.下述三个有什么区别?

char * const p;//p为指向字符变量的指针,地址不变,地址内容可变
char const * p;//p为指向字符变量的指针,地址可变,地址内容不变
const char *p;//同上,二者没有区别

1)char * const p; //常量指针,p的值不可以修改(地址不可以修改),但是指向的内容可以修改

2)char const * p;//指向常量的指针,指向的常量值不可以改  

3)const char *p;

const和char的顺序可以随意换,二者是一个意思。

3.右左法则:认识不同的指针

int(*p)[4];//整形数组指针--指向数组的指针
int* q[4];//整形指针数组--存指针的数组
int(*p1[5]);//指针数组   同上
int* (*p2[3])(int);//指针函数指针数组
int* p3(int n);//指针函数  返回值为指针的函数
int (*p4)(int, int);//函数指针--指向函数的指针

1)数组指针--指向数组的指针

2)指针数组--存指针的数组

3)指针函数--返回值为指针的函数

4)函数指针--指向函数的指针

5)右左法则:以int* (※p2[3])(int);为例,先找到标识符p2,

第一步,先看p2右边[3]代表数组,先把数组写上,数组

第二步,向左看,*代表指针,所以在数组前面写上指针 指针数组

第三步,向右看是一个(int)代表函数,所以把函数写在指针前面,函数指针数组

第四步,向左看,又是一个※,代表指针,所以把指针写在函数前面。指针函数指针数组

右左法则总结:先右后左,一次只看一个 (int)和(int n)都代表函数,若标识符有括号,则先看括号内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在凌晨等太阳¤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值