博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13-初识指针
阅读量:6463 次
发布时间:2019-06-23

本文共 2419 字,大约阅读时间需要 8 分钟。

一、函数的实际运行原理

函数在接受参数的时候,会重新开辟内存来进行计算。

 

二、指针

最牛逼:汇编语言:都是直接操作地址去访问内存单元里面等内容。

C语言作为高级语言:提供通过地言:都是址去访问内存单元的内容。

1、什么叫做地址?

 

地址就是内存中对每一个字节的编号。

通常一个数据的地址指的是存放这个数据的地址段的首地址。

 

注意:1、一个程序在运行是会自动为变量开辟新的内存,地址会变。

2、在同一次运行过程中变量的地址是不会变的。

3、数据段,一个程序是在一个数据段中进行的。

 

&(取地址运算符):单目运算符,返回一个变量的地址

*(指针运算符):单目运算符,返回的是一个地址里面的变量的数据。

&*具有相同的优先级,自右向左结合。

 

2、什么是指针?

指针就是地址,地址就是指针。

3、什么是指针变量?

存放地址的变量。

1、指针变量的声明: 数据类型 *变量名;  int *p;

2、指针变量的赋值:

A、在声明指针的时候赋值:int *p=&a;

B、先声明,再赋值。 Int *p;  p=&a;

C、不允许把一个数赋值给指针变量:int *p;   p=50000;(错误的)

3、指针变量的引用:

*变量名;Int *p;  p=&a;   *p=a;

 

1 #include 
2 3 int main() 4 { 5 int a, b; 6 int *p; //声明一个指针变量 7 8 a = 20; 9 b = 25;10 p = &a; //把变量啊的地址赋予p 1000011 12 printf("变量a的值为:%d\n", a);13 printf("变量b的值为:%d\n", b);14 printf("变量a的地址为:%d\n", &a);15 printf("变量b的地址为:%d\n", &b);16 printf("指针变量p的值为:%d\n", p);17 printf("指针变量p指向的变量的值为:%d\n", *p);18 19 return 0;20 }

 

 

1 #include 
2 3 int main() 4 { 5 int a, b; 6 int temp; 7 8 a = 6; 9 b = 3;10 11 temp = a;12 a = b;13 b = temp;14 15 printf("a=%d\nb=%d\n", a, b);16 }

1 #include 
2 3 void Swap(int a1, int b1); 4 5 int main() 6 { 7 int a, b; 8 a = 6; 9 b = 3;10 11 Swap(a, b);12 printf("a=%d\nb=%d\n", a, b);13 }14 15 void Swap(int a1, int b1)16 {17 int temp;18 temp = a1;19 a1 = b1;20 b1 = temp;21 }

 

 

 

1 #include 
2 3 void Swap(int *pa1, int pb1); 4 5 int main() 6 { 7 int a, b; 8 int *pa,*pb; 9 10 a = 6;11 b = 3;12 13 pa = &a;14 pb = &b;15 16 Swap(pa, pb);17 printf("a=%d\nb=%d\n", a, b);18 19 }20 21 void Swap(int *pa1, int *pb1)22 {23 int temp;24 temp = *pa1; // 25 *pa1 = *pb1;26 *pb1 = temp;27 }

 

 

 

 

1 //  x=x+y   y=x-y 2 #include 
3 4 void Calc(int *pa1, int*pb1); 5 6 int main() 7 { 8 int a = 6,b = 3; 9 int *pa = &a, *pb = &b;10 11 Calc(pa,pb);12 printf("a=%d\nb=%d\n", a, b);13 }14 15 16 void Calc(int *pa1, int*pb1)17 {18 int temp;19 temp = *pa1;20 *pa1 = *pa1 + *pb1;21 *pb1 = temp - *pb1;22 }

最后一个:int a  float b  double c  运算  加减乘除 a+b  c+c  a-b  b*c  a/b

 

指针变量的运算:

(1)指针变量只可以做加减,不能做乘除,可以做关系运算

(2)加减法时,以指针指向的变量存储字节为单位。

Int a     int *pp=&a2000  p+1=2004    4

Short    p+1  2002     2

Char     p+1  2001    1

 

Pa  pb  pc  ----->  a

 

*pa --->a  

*pb 的值实际上就是a的值  *pb也会变化。

 

转载于:https://www.cnblogs.com/tiantiancode/p/11131750.html

你可能感兴趣的文章
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
乱码的情况
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
GitHub使用教程、注册与安装
查看>>
CODE[VS] 1294 全排列
查看>>
<<The C Programming Language>>讀書筆記
查看>>
JS详细入门教程(上)
查看>>
Android学习笔记21-ImageView获取网络图片
查看>>
线段树分治
查看>>
git代码冲突
查看>>
poll
查看>>
解析查询 queryString 请求参数的函数
查看>>
学生选课系统数据存文件
查看>>
我的毕设总结所用的技术和只是要点 基于stm32F4的AGV嵌入式控制系统的设计
查看>>
JMeter—断言
查看>>
C++的新类创建:继承与组合
查看>>
asp操作access提示“无法从指定的数据表中删除”
查看>>