`
Ydoing
  • 浏览: 106076 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C语言指针必知必会

 
阅读更多

每个指针都有一个值

指针是一个非负的整数值,表示存储的地址.

指针必定有个类型

这个类型指的是指针指向这个地址单元(连续的地址空间)存放的数据类型.void表示泛型,可以转换成任何类型.

用”*”可以声明一个指针变量, 也可以间接引用指针.

用(int *)p来声明p是指针, 类型为int. 通常情况下括号可以省略. 用*p解引用来获取指针p指向的值.

用&获取一个变量的地址

&只能放在在变量的前面, 即只能操作左值.

可以改变一个指针的类型,但是指针的值没有变

指针的类型和指针的值应该分开来看待.

指针和数组密切相关

数组名在特定的情况下可以转换为一个指针, 只不过数组名是一个不能改变的指针, 不能做自增和自减移动.

指针可以指向函数

函数名就是一个指针变量, 只是C语言把它简化了, 不需要显示声明函数为指针. 既然函数名是一个指针变量, 我们就可以把函数名当做右值赋值给另一个函数指针. 可实现回调函数(callback).

实例

#include<stdio.h>

void swap(int *x, int *y){
    int t = *x;
    *x = *y;
    *y = t;
}

int main(){
    //声明指针
    int *p;
    int x = 13;
    p = &x;//获取变量的存储地址

    printf("The value of p is: %d\n", p);
    printf("The size of p is: %d\n", sizeof(p));

    //指针类型转换
    char *q = (char *)p;

    printf("The value of q is: %d\n", q);//返回的值和p一样
    printf("The value of *q is: %d\n", *q);//返回值为13,说明系统按小端序存放数据

    //声明一个函数指针fswap, 函数签名与swap一样.
    void (*fswap)(int *, int *);
    fswap = swap;//函数指针fswap赋值

    int a = 3, b = 5;

    //函数指针调用
    fswap(&a, &b);
    printf("after swap: a is %d, b is %d\n", a, b);
}

输出:

The value of p is: 1200656396
The size of p is: 8
The value of q is: 1200656396
The value of *q is: 13
after swap: a is 5, b is 3
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    彻底搞定C语言指针详解-完整版-时候初学者-必备.rar

    C语言中的指针是编程语言的关键特性之...这个“彻底搞定C语言指针详解-完整版-时候初学者-必备”资源应该包含了所有这些内容,对初学者来说是一份宝贵的教程资料。通过学习和实践,你将能够更好地理解和运用C语言指针。

    彻底搞定C语言指针详解-完整版-时候初学者-必备.doc

    ### 彻底搞定C语言指针详解 #### 一、变量与内存空间的理解 要深入理解C语言中的指针,首先要从理解变量及其在内存中的存储方式入手。 **内存空间的概念**: - 内存是一种计算机硬件,用于暂时存储运行程序的...

    C语言指针运用探讨.pdf

    C语言指针运用探讨的知识点: 一、C语言指针的基本内涵 1. 指针变量定义:在C语言中,指针是一种特殊的变量,它用来存储数据的地址。这意味着指针变量存储的是内存中某个数据位置的地址,而不是数据本身。 2. 指针...

    c语言指针学习笔记(24k黄金专属版)

    C语言中的数组是指 一类 类型,数组具体区分为 int 类型数组,double类型数组,char数组 等等。同样指针 这个概念也泛指 一类 数据类型,int指针类型,double指针类型,char指针类型等等。 通常,我们用int类型保存...

    深入理解c语言指针的奥秘 指针的概念

    总结来说,理解C语言指针的奥秘,需要掌握其类型、所指类型、值和占据内存的特性,以及如何进行指针运算。这些概念是编写高效且安全的C语言程序的基础,对于任何C程序员来说都是必不可少的知识。在实践中,应时刻...

    深入理解C语言指针的奥秘

    深入理解C语言指针的奥秘,意味着要掌握其核心概念和运作机制。指针作为C语言中的一个重要特性,能够直接操作内存地址...无论是进行系统编程还是解决复杂的数据结构问题,熟练掌握C语言指针的奥秘都是必不可少的技能。

    彻底搞定C语言指针详解-完整版-时候初学者-必备

    ### 彻底搞定C语言指针详解:初学者必备指南 在C语言中,指针是一种非常强大的特性,它允许程序员直接操作内存地址,从而实现更高效的数据处理和内存管理。掌握指针对于任何C语言程序员来说都是必不可少的技能。...

    C语言指针的理解与运用.pdf

    "C语言指针的理解与运用" C语言指针是C语言中广泛使用的一种数据类型,运用指针编程是C语言的主要风格之一。利用指针变量可以直接对内存中各种不同数据进行快速处理,理解和运用好指针可以编出简洁明快、性能强的C...

    C语言指针详细讲解.ppt

    本讲座详细讲解了C语言指针的相关概念和使用方法。 首先,我们要了解什么是指针。在C语言中,变量是用来存储数据的,而每个变量在内存中都有一个唯一的地址。这个地址就像我们生活中的门牌号,用来标识数据的位置。...

    C语言指针教学方法探讨.pdf

    首先,指针的概念理解是学习C语言指针的基础。指针变量和普通变量的区别在于指针变量存储的是变量的内存地址,而普通变量直接存储数据值。例如,定义整型变量a和b,以及指针变量p和q,可以将a的地址赋给p,b的地址赋...

    c语言指针学习[文].pdf

    《C语言指针学习》 在C语言中,指针是一个至关重要的概念,它被誉为C语言的精华。要想真正掌握C语言,理解并熟练运用指针是必不可少的。本篇内容将深入探讨指针的各个方面,包括指针的类型、所指向的类型、值以及...

    C语言指针的题目用来训练

    C语言中的指针是编程中非常重要的概念,它允许...以上是对C语言指针相关的题目和知识点的详细解析,涵盖了指针的基本操作、指针与数组的关系、字符串处理以及地址的表示等方面。这些知识点是学习C语言必不可少的基础。

    C语言指针操作机制与常见问题分析.pdf

    【C语言指针操作机制与常见问题分析】 C语言中的指针是其强大的特性之一,它允许程序员直接操控内存,从而实现高效的数据处理和复杂的程序设计。本文将深入探讨指针的基本原理、实现机制,以及在使用过程中可能出现...

    C语言指针问答经典资源[收集].pdf

    《C语言指针问答经典资源》是一份针对C语言指针使用常见问题的集合,对于软件开发人员,尤其是初学者,具有很高的学习价值。指针是C语言的核心特性,能够实现许多高级功能,但同时也可能导致难以调试的问题,尤其是...

    C语言学习必备合集(很有用)

    这个系列不仅仅是对C语言基础概念的介绍,比如变量、数据类型、控制结构和指针等,更是通过实际代码示例向我们展示了如何将这些概念应用到实际的编程任务中。无论你是初学者,还是已经有一定基础,希望进一步提升...

    C语言指针详细讲解PPT学习教案.pptx

    因此,掌握C语言中指针的概念和使用方法,对于每一个致力于程序设计的开发者而言,都是必不可少的基本功。 指针的概念是C语言中较为抽象的部分之一,但其核心思想其实并不复杂。简单来说,指针就是存放变量地址的...

    第8章C语言指针[参考].pdf

    在C语言中,指针是极其重要的一个概念,它提供了对内存地址的直接操作,使得程序员能够高效地操控数据和实现复杂的数据结构。本章主要围绕C语言中的...因此,对于学习C语言的人来说,理解并掌握指针是必不可少的技能。

    C语言权威教程C语言学习必备

    结构体和联合体是C语言中复合数据类型的一部分,K&R教程会介绍如何定义和使用它们,以及如何通过指针操作结构体成员。这在处理复杂数据结构时非常有用,比如链表、树、图等。 书中还涵盖了错误处理和输入/输出操作...

    C语言项目实战-贪吃蛇游戏视频课程【附C语言上课代码+c语言中数学函数文档+必知必会15题代码】

    这个项目旨在帮助初学者将理论知识转化为实践技能,同时,提供的额外资源如C语言上课代码、数学函数文档以及必知必会的15题代码,都是为了巩固和拓展学习者的编程基础。 首先,C语言是计算机科学中一种基础且重要的...

Global site tag (gtag.js) - Google Analytics