变量实际上代表了内存中的某个存储单元,用变量名对某个存储单元进行命名。
建立某个变量实际上就是系统分配一定字节的存储单元,不同类型的变量占用的存储单元是不一样的。
int age=10;
int* pointeronage=&age;
age是整型变量,数值是整形数据10;
pointeronage是指针型变量,存储的是整型变量age的地址值,指向变量age,int代表指针型变量指向的变量类型是int型。
int* pointer代表指针型变量指向的变量类型是整型,指针型变量int*、float*、double*、char*等前面的类型标示符代表指针变量指向的变量类型,不代表占用存储单元的大小,在32操作系统中占用大小都是4个字节。
age和pointeronage都是变量只是一个是整型变量int,一个是指针变量int*,在内存在都有地址值都有数值,只是pointeronage指向变量age存储的数值是变量age的地址,pointeronage本身是个变量也有地址值,它的值是age的地址。
int age; 整型变量
&age 变量age的地址值
pointeronage;是一个指针变量
*pointeronage 指针变量指向变量的值
&取地址符号;*取值符号
==
#include<stdio.h>
void main()
{
int age=10;
int *p=&age;
printf("age的值是: %d\n",age);
printf("age的值是: %d\n",*p);
printf("age的地址值是: %p\n",&age);
printf("age的地址值是: %p\n",p);
}
===
int number=0;
sacnf(“%d”,&number);
在以上程序段中先定义整型变量number并初始化为0,讲变量number的地址值传递给scanf函数,所以scanf()就可以使用 用户通过键盘输入的数值直接修改变量number的值了。
以上程序还可以修改为
int number=0;
int* p=&number;
scanf(“%d”,p); //这里p就指向变量number,代表变量number的地址;
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
将代码封装:
将一些繁琐的,经常使用的代码封装成函数,
调用这个函数就会执行这次额代码。
函数的返回和参数:
类型标示符,函数返回值类型<函数值类型>
任何函数都可以调用其它函数,main()函数不能被调用
不能返回一个函数内局部变量的地址<即将消失的比昂量的地址>
参数:形参和实参,参数传递就是用实参给形参赋值
指针作为函数的参数例如:将一个数组的首地址作为
实参赋予函数的形参;
数组名作为函数的参数;
底层操作系统支持应用程序;
变量未进行初始化,VC会把垃圾值,变成填充值;
整数是以补码的形式存储在计算机中的;浮点型是IEEE754存储;字符存储和整数相同,字符对应的ASCII码;
float和double都不能准确存储一个数据,所以循环更新部分不能用浮点型;
三目运算符 A ? B : C A成立执行B,否则执行C