c语言主要函数jz,C语言指针知识点

指针基本概念

指针:就是内存的地址编号

指针变量:用来存放地址变量,通常所说的指针就是指针变量

定义指针 :格式  指针所指向的数据类型 *指针变量名称 int * a

作用

在定义变量的时候,*是一个类型说明符,说明定义这个变量是一个指针变量,在不是变量定义的时候,它是一个操作符,访问指针所指向的存储空间

&作用 取地址符,取出变量的地址,*与&是一对反操作符

指针的初始化步骤

1 先定义指针变量然后初始化  int num=10

int *p ; 2 定义指针变量的同时进行初始化 int *#*p=20;

如果指针只有定义没有初始化,那么它里面是垃圾值,也就是它指向是不确定的,那么此时我们称这个指针为野指针

2 不能给指针变量直接赋值一个整形的数值

指针与函数:1 指针作为函数参数

1: 指针作为函数参数传递是地址传递

2:如果你仅仅是在被调函数中,去修改变量本身的值,是不会影响函数中变量的值的

3 基本数据类型作为函数参数是值传递

4 数组作为函数参数是地址传递

2 指针作为函数的返回值(指针函数)

1 不能使用局部变量的指针作为函数的返回值

2

可以是指向堆内存和常量去的指针作为函数返回值

3 函数指针:指向函数指针(重点)

格式:所指向的函数的返回值类型(*指针变量名称)(所指向的函数的形藏列表)

写一个函数指针的步骤

1 ,把要指向的函数的头拷贝过来

2 ,用小括号把函数名称扩起来

3 ,在函数名称前面加 *

4 ,修改函数名称为指针变量名称

让函数指针指向某个函数 pointer = 函数名称 同过函数指针调用 pointer(实参列表)

注意点:函数指针与所指向的函数,返回值类型和形参列表必须一致

指针与数组

1 一维数组 1.1 指针像一个数组

使用数组方式和使用指针方式都可以去访问数组中某个元素

array[1] == pointer[1] ==

*(array+1) == *(pointer+1)

1.2 array = &array pointer !=

&pointer

1.3 指针的指向可以改变的,数组的指向时不可以改变的

1,4

当把一个数组赋值给一个指针变量的时候,有些信息就丢失了sizeof(array)!=sizeof(pointer)

2 指针数组:元素为指针的数组 指针类型 数组名称[数组的元素个数] 比如: int *nums[5];

3 数组指针:数组中元素数据类型(*pointer)[所指向的一维数组元素个数]

数组指针与二维数组的数组名称相似

4 指针与二维数组 int nums[2][3] ={{12,13,14},{15,16,17}};

int (*pointer)[3] = nums;

*(nums+1) == nums[1] == *(pointer+1)它是加上一个一个一维数组所占用存储空间的字节数 int

*p = nums[1] +1 == &num[1][1]

5 指针与字符串

1

保存字符串的方式

1 使用char类型的一维数组  char name[]=

“zxc”;

2 使用char类型的指针 char *name ="zxc"

3 区别 1 字符数组是保存在栈中的,它里面的元素是可以任意的修改的 2

字符指针是一个指向常量的区指针,字符串中的元素是不可以修改的

1 字符串数组

1 使用char类型的二维数组 char  names[][20] = {"nc","qd"}; 3

字符串数组 char *names = {"nc","qd"};

6  内存分区 (掌握)

从上到下

栈:用来保存局部变量 ,它的内存由系统管理的

堆:用来存储对象的,它是由程序员管理的

全局区:用来存放全局变量和静态变量

常量区:用来存放常量,只读的

代码区:用来存放代码,只读的

7 const关键字

1

const修改普通变量说明这个变量是只读的

2 const修改数组说明数组中元素是只读的

3 const修饰指针

const在*前面,说明指针所指向的存储空间是制度的

const在*后面,说明指针的指向是不可以修改的

4 const用来形参

1 函数内部不能修改函数外部的变量值

2

告诉函数的调用者你可以放心把数据传入我不会修改你的内容

5 const修饰函数的返回值

8 动态存储空间的使用

1 申请堆中的内存

int *pointer =

malloc(sizeof(int));

2 使用内存

*pointer=20;

3  使用完了需要手动释放

free(pointer);

4 清空指针

pointer = NULL

注意点 1 : 不能重复释放

2 堆中的存储空间在没有释放之前必须有一个指针指向这快内存,否则永远不能释放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值