返回目录:金融新闻
一、函数的实际运行原理
函数在接受参数的时候,会重新开辟内存来进行计算。
二、指针
最牛逼:汇编语言:都是直接操作地址去访问内存单元里面等内容。
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;
#include<stdio.h>
int main()
{
int a, b;
int *p; //声明一个指针变量
a = 20;
b = 25;
p = &a; //把变量啊的地址赋予p 10000
printf("变量a的值为:%d\\n", a);
printf("变量b的值为:%d\\n", b);
printf("变量a的地址为:%d\\n", &a);
printf("变量b的地址为:%d\\n", &b);
printf("指针变量p的值为:%d\\n", p);
printf("指针变量p指向的变量的值为:%d\\n", *p);
return 0;
}
#include<stdio.h>
int main()
{
int a, b;
int temp;
a = 6;
b = 3;
temp = a;
a = b;
b = temp;
printf("a=%d\\nb=%d\\n", a, b);
}
#include<stdio.h>
void Swap(int a1, int b1);
int main()
{
int a, b;
a = 6;
b = 3;
Swap(a, b);
printf("a=%d\\nb=%d\\n", a, b);
}
void Swap(inta1, intb1)
{
int temp;
temp = a1;
a1 = b1;
b1 = temp;
}
#include<stdio.h>
void Swap(int *pa1, int pb1);
int main()
{
int a, b;
int *pa,*pb;
a = 6;
b = 3;
pa = &a;
pb = &b;
Swap(pa, pb);
printf("a=%d\\nb=%d\\n", a, b);
}
void Swap(int *pa1, int *pb1)
{
int temp;
temp = *pa1; //
*pa1 = *pb1;
*pb1 = temp;
}
// x=x+y y=x-y
#include<stdio.h>
void Calc(int *pa1, int*pb1);
int main()
{
int a = 6,b =3;
int *pa =&a, *pb = &b;
Calc(pa,pb);
printf("a=%d\\nb=%d\\n", a, b);
}
void Calc(int *pa1, int*pb1)
{
int temp;
temp = *pa1;
*pa1 = *pa1 + *pb1;
*pb1 = temp - *pb1;
}
最后一个:int a float b double c 运算 加减乘除 a+b c+c a-b b*c a/b
指针变量的运算:
(1)指针变量只可以做加减,不能做乘除,可以做关系运算
(2)加减法时,以指针指向的变量存储字节为单位。
Int a int *p; p=&a;2000 p+1=2004 4
Short p+1 2002 2
Char p+1 2001 1
Pa pb pc -----> a
*pa --->a
*pb 的值实际上就是a的值 *pb也会变化。