02c语言指针基础
& 用来取一个变量的地址
* 用来取一个地址的值
例如:
(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语言指针基础的更多相关文章
- C语言指针基础
新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么? 指针本身是一个变量,它存储的是数据在内存中的地址 ...
- C语言 指针基础篇 数组,函数与指针的运用 2 14
下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的.判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回. #include <stdio.h> ...
- 没事抽空学——c语言指针操作基础概念
指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针]
[易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针] 实用知识 智能指针 我们今天来讲讲Rust中的智能指针. 什么是指针? 在Rust,指针(普通指针),就是保存内存地址的值 ...
- C语言之指针基础概念
今天就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简 ...
- C语言-指针
C指针基础知识 C语言中,指针无疑是最令人头疼的.今天无事就来学学C语言的指针,在此留下点笔记,仅供个人参考. 首先要搞懂的是,指针是什么? 指针:是用来存放内存地址的变量. 不管是什么类型的指针,存 ...
- (转载)c语言指针学习
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- C语言指针和数组知识总结(上)
C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是: %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址 ...
- C语言指针操作
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/pointer-manipulation. ...
随机推荐
- GDI中StretchBlt或Blt缩放图片失真问题
在用Scrollview控件的缩放图片时,严重失真: 解决方法:dc.SetStretchBltMode(COLORONCOLOR). 参考文章:https://blog.csdn.net/m3728 ...
- SQL-16 统计出当前各个title类型对应的员工当前薪水对应的平均工资。结果给出title以及平均工资avg。
题目描述 统计出当前各个title类型对应的员工当前薪水对应的平均工资.结果给出title以及平均工资avg.CREATE TABLE `salaries` (`emp_no` int(11) NOT ...
- 201621123001 《java程序设计》第2周学习总结
1. 本周学习总结 学会String 类的一些用法,比如用subString()截取字符串,频繁对字符串进行修改应使用StringBuilder()等. 学会Array 类的一些用法,比如sort() ...
- innerHTML和innerText的区别,以及select元素中怎么取出被选中的option。
一.innerHTML和innerText的区别. 元素.innerHTML = 字符串,是将一对或一个标签所标识的内容全部替换为所赋予的字符串,如果字符串中有标签,浏览器将自动识别其中的标签. 元素 ...
- 多点触控 TouchAction
#TouchAction #TouchAction方法是appium自已定义的新方法 # * 短按 (press) * 释放 (release) * 移动到 (moveTo) * 点击 (tap) * ...
- Appium 自带的定位工具 Inspector
前言:Appium Inspector是appium自带的一个元素定位工具 一.设置appium 1.点开android setting界面(机器人图标) 2.勾选Application Path,添 ...
- localStorage的使用记录
// 存数据 var str = JSON.stringify(back); localStorage.setItem("options", str); // 取数据 var op ...
- python文件读写小结
读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...
- Proxy --概述篇
概述: Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前架设 ...
- SQL注入之Sqli-labs系列第八篇(基于布尔盲注的注入)
开始挑战第八关(Blind- Boolian- Single Quotes- String) 这关首先需要用到以下函数: 开始测试,使用测试语句,利用单引号进行闭合 猜解字段 union select ...