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. jquery bind 传参数

    方法一. ? 1 2 3 4 function GetCode(event) { alert(event.data.foo); } ? 1 2 3 4 $(document).ready(functi ...

  2. Ansible常见问题处理

    1.ansible all -m ping报错,信息如下: [WARNING]: log file at /var/log/ansible.log is not writeable and we ca ...

  3. Linux中的gpio口使用方法

    Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h&g ...

  4. 【codeforces 731D】80-th Level Archeology

    [题目链接]:http://codeforces.com/contest/731/problem/D [题意] 给你n个象形文; 每个象形文由l[i]个数字组成; 你可以把所有的组成象形文的数字同时增 ...

  5. 01springMVC入门

    1      MVC模式回顾 Spring MVC是一种基于MVC的Web应用框架. MVC是一种设计模式,MVC在b/s系统下的应用: 执行步骤: 发出请求,请求到MVC当中的C,C接收请求后并不能 ...

  6. [Azure][Windows Azure介绍]C1了解Windows Azure

    本章介绍了Windows Azure平台,并介绍了该平台提供的不同的服务和解决方案.本章主要针对还不熟悉什么Windows Azure是和它能做什么的读者.如果你已经熟悉了Windows Azure, ...

  7. Java泛型(一):入门、原理、使用

    远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都是类似于下面这样: List list = new ArrayList(); list.add(&q ...

  8. git-osc自己定义控件之:CircleImageView

    git-osc自己定义控件之:CircleImageView 一.CircleImageView的使用 在项目中能够发现,用户的头像都是圆形的.感觉非常好奇,昨天最终发现了,原来是自定了一个Image ...

  9. [HTML 5] Atomic Relevant Busy

    Together 'aria-live', we can use 'aria-atomic', 'aria-relevant' and 'aria-busy' to give more informa ...

  10. PDF转EPUB格式电子书经验总结

    依据本人将PDF转换为EPUB电子书的经验,总结整理了这篇文章.因本人水平有限,难免有错误和不足之处,望大家及时批评指正.   写这篇文章时,假定读者已经会使用文中所列出软件的基本操作,比方如何用No ...