C语言速记4(指针速
2021/5/16 10:27:04
本文主要是介绍C语言速记4(指针速,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1,指针:
可以看成存储地址的变量,地址可以指向是函数和基本类型。
数据都要通过地址来查找获取横好理解,不同编程语言的区别就是在代码层面有没有可以主动使用还是交给编译器完成。
2,C语言中如何来表达指针:
变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址
指针变量声明的一般形式为:
type *var-name;
type 是指针的基类型(即指向变量的类型),var-name 是指针变量的名称,星号是用来指定一个变量是指针
int *ip; /* 一个整型的指针 */ double *dp; /* 一个 double 型的指针 */ float *fp; /* 一个浮点型的指针 */ char *ch; /* 一个字符型的指针 */
例子:
#include <stdio.h> int main () { int var_runoob = 10; int *p; // 定义指针变量 p = &var_runoob; printf("var_runoob 变量的地址: %p\n", p); return 0; } 执行后: var_runoob 变量的地址: 0x7ffeeaae08d8
一般指针操作的过程:
定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。通过 * 来获取指定地址的变量的值。
实例:
#include <stdio.h> int main () { int var = 20; /* 实际变量的声明 */ int *ip; /* 指针变量的声明 */ ip = &var; /* 在指针变量中存储 var 的地址 */ printf("var 变量的地址: %p\n", &var ); /* 在指针变量中存储的地址 */ printf("ip 变量存储的地址: %p\n", ip ); /* 使用指针访问值 */ printf("*ip 变量的值: %d\n", *ip ); return 0; }
执行结果:
var 变量的地址: 0x7ffeeef168d8 ip 变量存储的地址: 0x7ffeeef168d8 *ip 变量的值: 20
关于空指针:
赋为 NULL 值的指针被称为空指针, 空指针并非没有指向的地址, 而是这个值是0. 如果没有确切的地址可以赋值, 为指针变量赋一个 NULL 值是一个良好的编程习惯。 大多数的操作系统上,程序不允许访问地址为 0 的内存, 因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义, 它表明该指针不指向一个可访问的内存位置。 但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。
例子:
#include <stdio.h> int main () { int *ptr = NULL; printf("ptr 的地址是 %p\n", ptr ); return 0; } 执行结果: ptr 的地址是 0x0
实际上空指针说的是指针变量没有指向具体的一个基本类型。而是指针没有值(默认0)。
因此指针可以直接参与逻辑运算:
if(ptr) /* 如果 p 非空,则完成 */ if(!ptr) /* 如果 p 为空,则完成 */
数组指针函数指针。
单独的函数名称和数组名称代表各自的指针。
这篇关于C语言速记4(指针速的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享