& 用来取一个变量的地址

* 用来取一个地址的值

例如:

(1)&n 获取n的地址

int *p=&n;

*p就等于p的值

(2)

假设 int n=10;

*(&n) 就等于先取了n的地址 然后又取了这个地址的值 也就是n 结果是是

&(*n)就等于先取了地址为10的值,再去取这个值的地址。(但这种是错误的,一定要避免,你不知道地址为10里面到底是什么东西)

指针初始化

一般写法
int I;
int *p;
p=&I;

指针P用来存放I的地址(指针就是用来存储一个变量的地址的)

简化写法

int i;
int *p=&I

常见错误:

(1)不可以直接给指针赋值

eg:

int *p;

p=10010;//(错误)

(2)scanf的错误

eg:

int n;

scanf("%d",n);//正确应该为&n

向系统输入一个n的地址

数据交换

关于函数中的值传递与址传递

一、址传递

#include<stdio.h>
void swap(int *i, int *n)
{
int t;
t = *i;
*i = *n;
*n = t;
printf("%d %d\n", i, n);
}
int main()
{
int i = , n = ;
printf("%d %d\n", &i, &n);
swap(&i, &n);
printf("%d %d\n", i, n);
system("pause");
return ;
}

二、值传递

#include<stdio.h>
void swap(int i, int n)
{
int t;
t = i;
i = n;
n = t;
printf("%d %d\n", i, n);
}
int main()
{
int i = ,n=;
printf("%d %d\n", &i, &n);
swap(i, n);
printf("%d %d\n", i, n);
return ;
}

值传递中发现值并没有发生交换,那是因为函数的形式参数不影响主函数中的i,n两个变量。

而址传递直接将地址传入到函数内,并通过指针将数值对换,因此交换成功

下面为几个指针的例子

#include <stdio.h>
void fun(int *x, int *y) {
printf("%d %d \n", *x, *y);
*x = ;
*y = ; }
main() {
int x = , y = ;
fun(&x, &y);
printf("%d %d", x, y); }

#include <stdio.h>
void swap(int *p1, int *p2) {
int *temp;
temp = p1;
p1 = p2;
p2 = temp; }
main() {
int a, b;
int *p1 = &a, *p2 = &b;
printf("%d %d\n", &a, &b);
scanf_s("%d %d", p1, p2);
swap(p1, p2);
printf("%d %d\n",*p1,*p2);
printf("%d %d", &a, &b); }

地址也并没有进行交换

02c语言指针基础的更多相关文章

  1. C语言指针基础

    新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址 ...

  2. C语言 指针基础篇 数组,函数与指针的运用 2 14

    下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的.判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回. #include <stdio.h> ...

  3. 没事抽空学——c语言指针操作基础概念

    指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. ...

  4. [易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针]

    [易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针] 实用知识 智能指针 我们今天来讲讲Rust中的智能指针. 什么是指针? 在Rust,指针(普通指针),就是保存内存地址的值 ...

  5. C语言之指针基础概念

    今天就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简 ...

  6. C语言-指针

    C指针基础知识 C语言中,指针无疑是最令人头疼的.今天无事就来学学C语言的指针,在此留下点笔记,仅供个人参考. 首先要搞懂的是,指针是什么? 指针:是用来存放内存地址的变量. 不管是什么类型的指针,存 ...

  7. (转载)c语言指针学习

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

  8. C语言指针和数组知识总结(上)

    C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是:  %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址 ...

  9. C语言指针操作

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/pointer-manipulation. ...

随机推荐

  1. log4net 2.0.8 不支持core 数据库记录日志

    经过反编译log4net 标准库的代码,原本有的数据库链接AdoNetAppender 在core里面引用的,没有掉了. 可能新版本会有.

  2. heightchart配置详解

    <div id="container" style="width: 100%; margin: 0 auto"></div><sc ...

  3. DevExpress v18.1新版亮点——Reporting篇(一)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...

  4. Ansible-playbook的简单使用 [转]

    一. 介绍 ansbile-playbook是一系列ansible命令的集合,利用yaml 语言编写.playbook命令根据自上而下的顺序依次执行.同时,playbook开创了很多特性,它可以允许你 ...

  5. CSS学习笔记-03- 过渡模块之前奏篇 a标签的伪类选择器

    CSS3 2D转换CSS3 3D转换CSS3 过渡CSS3 动画 CSS3 的四大金刚. 想要实现酷炫的视觉效果,上面4个是必须要掌握的.学习之前,先复习一下 视觉盛宴的前菜 :a标签的伪类选择器 铛 ...

  6. 使用kafka和zookeeper 构建分布式编译环境

    1:在每台机器上安装jdk, 脚本代码如下: 每一个机器上下载jdk,zookeeper,kafka 链接:https://www.oracle.com/technetwork/java/javase ...

  7. 解决Detected problems with API compatibility...

    如果是10.3.0那么targetsdk改28.

  8. django面试七

    Dango model 几种继承形式抽共享继承不能等实例化,抽象方法必须在子类中实现,Django不对其建立对应的表.class Animal(models.Model): name = models ...

  9. git命令学习

    git init:把当前目录变成Git可以管理的仓库git add file:把文件添加到仓库git commit -m "描述语句":把文件提交到仓库git status:该命令 ...

  10. Python 区分方法和函数

    def func(): print("我是函数") class Foo: def chi(self): print("我是吃") # print(func) # ...