C语言初级阶段7——指针2——特殊指针

指针函数:是一个函数,返回值类型是一个指针。

#include<stdio.h>
int* fun()
{
//a是一个局部变量
int a = 10;
return &a;
}
int main() {
int* p = fun();
printf("%d\n", *p);//能输出一次的原因是编译器做了一次优化。
printf("%d\n", *p);//a是局部变量,执行完就被释放了。
return 0;
}

函数指针:是一个指针,指针的指向是一个函数。

定义格式:函数的返回值类型(*函数指针名)(函数的形参列表)

#include<stdio.h>
//函数名就是这个函数的首地址
void fun1(int a,int b)
{
printf("%d\n", a + b);
}
void(*pFun)(int a, int b);
int main() {
pFun = fun1;
pFun(1, 2);
fun1(3, 4);
return 0;
}
#include<stdio.h>
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
//这一部分是我写的,但是需要别人提供计算功能。
void fun3(int (*pF)(int, int), int x,int y)//int (*pF)(int,int)=add;也可以
{
printf("%d\n", pF(x, y));
}
int main() {
fun3(add,10,10);
fun3(sub, 10, 10);
return 0;
}
#include<stdio.h>
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
typedef int(*pF)(int, int);//函数指针取别名,别名就是它自己。
//并且别名可以当作类型去使用。
#define aa 123
//这一部分是我写的,但是需要别人提供计算功能。
void fun3(pF pf, int x,int y)//int (*pF)(int,int)=add;也可以
{
printf("%d\n", pf(x, y));
}
int main() {
fun3(add,10,10);
fun3(sub, 10, 10);
return 0;
}

常量指针:定义不用初始化,能改变指向,指向的内容不能被修改。

const int *p

指针常量:定义的时候,必须初始化,不能改变指向,可以改变指向的内容。这个常量的值是一个指针。

int *const p1:

#include<stdio.h>
void fun4(const int* a)
{ }
int main()
{
int a = 10;
int b = 20;
int* const p3 = &a;
printf("%d\n", *p3);
return 0;
}

大端存储和小端存储

1.大端存储:高位存于高位中(适合人的存储方式)

数据的地址:0x12345678

0x0-0x3这四个字节当中

0x0 12

0x1 34

0x2 56

0x3 78

2.小端存储:低位存于低位中(电脑默认的存储为小端存储)

数据的地址:0x12345678

0x0-0x3这四个字节当中

0x0 78

0x1 56

0x2 34

0x3 12

C语言初级阶段7——指针2——特殊指针的更多相关文章

  1. C语言之数组,字符串,指针

    一. 数组的定义 1.  数组初始化 初始化方式 int a[3] = {10, 9, 6}; int a[3] = {10,9}; int a[] = {11, 7, 6}; int a[4] = ...

  2. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  3. C语言中字符数组和字符串指针分析

    这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这 ...

  4. C语言函数指针变量和指针函数以及指针数组

    C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...

  5. C语言的本质(12)——指针与函数

    往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂.下面详细为大家介绍C语言中指针函数和函数指针. 1.指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需 ...

  6. C语言的本质(11)——指针与数组

    1.指针数组和数组指针的内存布局 初学者总是分不出指针数组与数组指针的区别.其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是"储存指针的数组 ...

  7. C语言的本质(10)——指针本质

    指针,大概是C语言中最难理解的概念之一了.指针这个东西是C语言中的一个基本概念,C99中对于指针的定义是: 1. 指针的类型是derived from其它类型,也就是说指针的类型是由它指向的类型决定的 ...

  8. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  9. 【嵌入式开发】C语言 结构体相关 的 函数 指针 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://www.hanshuliang.com/?post=30 . 结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同; -- 可进行 ...

  10. C语言复习: 二级指针和多级指针

    二级指针内存模型建立 void main2() {     int i = 0;       //指针数组     char * p1[] = { "123", "456 ...

随机推荐

  1. html的table多级表头表格的代码

    1,两级表头的代码 <html> <head> <title>多层表头</title> <link rel="stylesheet&qu ...

  2. 百度地图的API接口

    API接口 API:应用程序接口(API:Application Program Interface) python 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好 ...

  3. UltiSnips安装及设置

    2022-10-05 10:56:50 星期三 安装了UltiSnips插件,然后开始学习 第一个命令 UltiSnipsEdit 不好使,创建了~/.vim/UltiSnips 还是 can not ...

  4. @EnableAspectJAutoProxy 注解的作用 —— 转载

    @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)解决同类方法调用时异步和事务不生效:我们在开启springboo ...

  5. 【5】python之基础语法

    1.编码格式 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 ...

  6. python 知识点总结

    第一张 1)变量 内存空间的表达式 命名要遵守规则 赋值使用 = 2)类型转换 str()将其他类型转成字符窜 int() 将其他类型转成整数 float()将其他类型转成浮点数 3)数据类型 整数类 ...

  7. Git commit时提示错误时 解决办法

    问题描述: * Please tell me who you are.  Run  git config –global user.email "you@example.com"  ...

  8. oracle内存管理

    关于内存管理 必须管理的内存结构是系统全局区(SGA)和实例程序全局区(instance PGA).Oracle 数据库支持各种内存管理方法,这些方法由初始化参数设置选择. 自动内存管理 Oracle ...

  9. 039_External Data Source(转载)

    场景描述:很多时候在实际开发中都会遇到很多数据集成问题,如Salesforce和SAP同步数据.为了让类似问题能方便.快速地解决,Salesforce提供了"外部数据源"这样的工具 ...

  10. 037_Clone Button

    ResolutionTo do this first go to Setup | Customize | Accounts | Buttons and Links | New. Enter the f ...