核心:值和地址的表示和相互转换
* 和 & 是一组相反的操作:
* 从指定的地址中取出值
& 获得给定的值的地址
指针的秘密就在下图:
新的类型:指针,用来保存变量的地址
为了特别指出声明的变量是指针,需要使用新的符号 *
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main(int argc, char *argv[])
{
int xiaowang_money = 320; // 小王
int xiaoc...
阅读全文
数组的本质是常量指针
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#define N 10
int main()
{
int i, a[N];
for(i=0; i<N; i++) a[i]=2*i+1;
for(i=0; i<N; i++) printf("%4d", a[i]);
return 0;
}#include <stdio.h>
#define N 10
int main()
{
int i, a[N];
f...
阅读全文
传址调用就是传地址调用,也称为传引用调用。函数的另外一种调用方式是传值调用。
传值调用建立参数的一份拷贝并把它传给调用的函数,在调用函数中修改参数值的拷贝不影响原始的变量值;传引用调用允许调用函数修改原始变量的值。
如何写一个函数来交换两个整数变量呢?
1
2
3
4
5
void swap(int x, int y)
{
int t;
t = x; x = y; y = t;
}void swap(int x, int y)
{
int t;
t = x; x = y; y = t;
...
阅读全文
静态分配就是在编译程序的时候就确定空间,动态分配就是在运行过程中由程序本身根据需要来确定空间。
malloc语法
void *malloc( size_t size );void *malloc( size_t size );
说明:malloc向系统申请分配指定size个字节的内存空间,返回类型是 void* 类型,void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
malloc往往和free配对使用,free用于释放相应的内存。
void free...
阅读全文