1、什么是指针

  2、指针用于参数

  3、指针用于返回值

  4、指针加减操作

  5、指针与数组区别

1、什么是指针

  • 内存被分为字节,每个字节有唯一的地址,指针指的就是内存地址。

  • 保存指针的变量,就叫指针变量。(保存地址)

  • 声明一个指针变量

int i = 0;

int* p;//声明一个指针变量 int* 指针类型

int * p; int* p; int *p;

  • 每个指针变量能指向一种特定类型的对象(地址,内存区 域)。

  • 指针是引用数据类型,因为本身没有保存数据,只是保存了 数据的地址,间接的找到内存中的数据。

 

2、指针用于参数

  • 值传递

void swap(int a, int b) {

  int temp = a;
  a = b;
  b = temp;

}

int main() {
  int a = 5, b = 8;

  swap(a, b);

  printf(“%d,%d”, a, b);

}

  • 地址传递

void swap(int *a, int *b) {

  int temp = *a;
  *a = *b;
  *b = temp;

}

int main() {
  int a = 5, b = 8;

  swap(&a, &b);

  printf(“%d,%d”, a, b);

}

3、指针用于返回值

  • 指针也可以做为返回值

  • 不要返回自动变量的地址,因为局部变量的生命周期,当函 数结束,局部变量会被自动清除(释放)。解决方案:延长 生命周期。

4、指针加减操作

  • 指针支持加整数、减整数、指针的比较和相减,但运算的单位由指针的类型决定。

    int类型指针+1 = 地址+4

    char类型指针+1 = 地址+1

  

5、指针与数组区别

  • 占用内存空间

-数组占用空间 = 数组元素占用的空间*长度

-指针占用空间 = 在64位系统下,8个字节,固定的,与指针 的类型没关系。

  • 赋值

-数组名是常量,是不可以修改其值

-指针是变量,可以多次赋值

-对指针的赋值,本质上是指针指向的改变

C语言基本语法——指针的更多相关文章

  1. Swift3.0语言教程使用指针创建和初始化字符串

    Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性.C语言中为我们提供了指针,Swift也不例 ...

  2. GO语言中的指针

    http://www.tizgrape.com/?p=100 Go语言中的指针语法和C++一脉相承,都是用*作为符号,虽然语法上接近,但是实际差异不小. Go使用var定义变量: var v6 *in ...

  3. go语言基本语法

    一个例子总结go语言基本语法  demo.go   package main   import (     "fmt" )   //结构体 type PersonD struct ...

  4. C语言基础语法

    #include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...

  5. Go语言基础之指针

    区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. Go语言中的指针 Go语言中的函数传参都是值拷贝 ...

  6. Smali语言基础语法

    1.Smali语言基础语法-数据类型与描述符 smali中有两类数据类型:基本类型和引用类型.引用类型是指数组和对象,其它都是基础类型. 基本类型以及每种类型的描述符: Java类型 类型描述符 说明 ...

  7. 02. Go 语言基本语法

    Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那 ...

  8. c语言之函数指针应用

    c语言之函数指针应用 1.函数指针与指针函数 在开始运用函数指针前,我们需要将两个概念即:函数指针与指针函数搞清楚. 函数指针,指明这个一个函数,但返回值为指针类型,语法格式为: 类型名* 函数名A( ...

  9. 3.1 Go语言基础之指针

    区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. 一.Go语言中的指针 Go语言中的函数传参都是值 ...

随机推荐

  1. js中标签字符串的拼接

    //1.用单双引号拼接 var valueDemo = "111"; var htmlStrs1 = '<option selected="selected&quo ...

  2. C语言提高 (2) 第二天 用指针对字符串进行操作

    2 昨日回顾 p++: (把地址转换成整型 加上它所指向的数据的大小 3指针成立条件和间接赋值 条件一:有两个变量 其中至少一个是指针 条件二:建立关联 条件三:间接操作 4间接操作的例子 5间接操作 ...

  3. 【Tool】Mac环境维护

    1. 安装编译opencv https://blog.csdn.net/lijiang1991/article/details/50756065 /Users/yuhua.cheng/Opt/open ...

  4. ROPI下载安装

    ROPI下载安装 官方地址 参考文献 安装过程 wget http://num.math.uni-goettingen.de/~m.goerigk/ropi/0.1.0/ropi-0.1.0.tar. ...

  5. Java基础学习总结(62)——Java中的流和Socket

    按行读入方式: BufferedReader(); 1.以行为读取单位,读取比较方便. 按行读一般都是字符读. BufferedReader和PrintWriter的内存分析图: 数据流: 输入 输出 ...

  6. [SharePoint2010开发入门经典]10、使用SPS2010构建面向服务的应用程序

    本章概要: 1.使用SPS自带的web service 2.构建自定义web service 3.使用不同的客户端解决方案部署自定义站点

  7. Python Study (01) 之 特殊方法

    Python深入:特殊方法和多范式 Python是一切皆对象,意思就是python的天生就是个"纯面向对象语言"呀. 但是!!! Python还是一个多范式语言(multi-par ...

  8. openstack通过Network Namespace和iptables实现租户私有网络互訪和L3路由功能

    安装架构介绍 本文旨在通过自己搭建类似neutron (openvswitch + gre) 实现SDN 的环境,学习了解其工作原理,模拟核心原理.比方:同一租户自己定义网络 instance 互通, ...

  9. centos6安装eclipse

    1. 下载eclipse 我下载的是eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz 能够在http://www.eclipse.org/downloads/处 ...

  10. CodeForcess--609B--The Best Gift(模拟水题)

    The Best Gift Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submi ...