C语言——初阶指针

简介: C语言——初阶指针



一.指针是什么

*说明pa是指针变量,int说明pa指向的a的类型是Int

生成的地址作为一个内存单元的编号。一共有2^23次方个地址,设一个地址为一个字节,那么就有2^23次方个字节(4GB)。

 

二.指针与指针类型

 

int num = 0;
int* num = #

 

2.1 指针+-整数

 当我们打印两者的地址时,发现没有区别。

现在给它们都加上1,发现就出现不同了。

 

在数组中,我们同样可以通过不同的指针类型来进行访问的位置。

 

 

2.2 指针的解引用

原本a放的是44 33 22 11,但是通过解引用后全部变为0.

当我们尝试把指向a的变量类型改成char时,a的数据存放发生了变化——只改了4个字节中的一个字节。

 

三.野指针

 

3.1 野指针成因

1.指针未初始化。

2.指针越界,当访问第11个字节的时候,这是不属于数组的,自然也不能修改。

3.指针指向的空间被释放

虽然最后是取到了a的地址,但是函数一结束栈空间就销毁了,那么这跟未初始化一个道理。

 

 

3.2 如何规避野指针

程序会报错:

所以要避免在NULL时对其修改。

 

四.指针运算

4.1指针+-整数

不管怎么变,其本质都是一个地址加上偏移量。

 

4.2指针-指针

依次循环,把values数组中的5个元素都变成0.

指针-指针还可以应用于计算数组元素个数:

 

 

4.3指针的关系运算

#define N_VALUES 5
float values[N_VALUES];
float * vp;
for(vp=&values[N_VALUES];vp>&values[0];)
{
    *--vp=0;
}

就是说可以从左往右比,但不建议从右往左比。

 

五.指针与数组

&arr+1会跳过40个字节,也就是整个数组。

注意,数组名不能++因为它是一个地址,是一个常量。而p可以++,因为它是一个指针变量。

六.二级指针

p与pp都是指针变量,而int * *是类型。

*表示p是指针,而int表示p所指向的类型。

同理*表示pp是指针变量,而int *是说明pp指向的变量的类型是int*。

pp前面加个*,可以找到并修改p,如果再加一个*,那么就是可以找到并修改a。

 

 

七.指针数组

 

相关文章
|
23天前
|
存储 C语言
【C语言基础】一篇文章搞懂指针的基本使用
本文介绍了指针的概念及其在编程中的应用。指针本质上是内存地址,通过指针变量存储并间接访问内存中的值。定义指针变量的基本格式为 `基类型 *指针变量名`。取地址操作符`&`用于获取变量地址,取值操作符`*`用于获取地址对应的数据。指针的应用场景包括传递变量地址以实现在函数间修改值,以及通过对指针进行偏移来访问数组元素等。此外,还介绍了如何使用`malloc`动态申请堆内存,并需手动释放。
|
26天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
1月前
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
|
2月前
|
存储 编译器 C语言
【C语言篇】深入理解指针2
代码 const char* pstr = "hello world."; 特别容易让初学者以为是把字符串 hello world.放 到字符指针 pstr ⾥了,但是本质是把字符串 hello world. 首字符的地址放到了pstr中。
|
2月前
|
存储 程序员 编译器
【C语言篇】深入理解指针1
assert.h 头⽂件定义了宏 assert() ,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终⽌运⾏。这个宏常常被称为“断⾔”。
|
2月前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
|
2月前
|
C语言
【C语言】指针速览
【C语言】指针速览
18 0
|
2月前
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
|
2月前
|
C语言
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)
|
23天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。