指针的使用
- 交换变量
1 | viod swap(int *p, int *q){ |
- 函数返回多个返回值
1 | viod minmax(int a[], int len, int *min, int *max){ |
- 返回运算状态,结果通过指针返回
通常是让函数返回特殊的不属于有效范围内的值来表示出错。(-1 0)
1 | //函数指针 |
指针变量必须有初始值,否则会报错。
指针和const
1 | int i; |
指针的计算
通常加的是 sizeof(类型)
指针+1:指向下一个地址
指针- 1:指向上一个地址
指针-指针:返回两个地址之间有多少个同一个类型的个数
*p++:取出p所指的数据来,同时指向下一个地址
1 | char ac[] = {0,1,2,3,4,5}; |
0地址
0地址通常不能碰的地址
指针不应该有0值
特殊意义:返回的指针无效;指针没有真正初始化;
NULL:预定义符号,表示0地址
有些编译器不愿意你用0表示0地址
指向不同类型的指针不能互相赋值
void*
直接访问内存地址,不确定什么类型
动态内存分配
int a = (int) malloc (nsizeof(int));
申请的空间大小以字节为单位,返回结果是void,需要类型转换
1 |
|
字符串操作
putchar()
getchar()
EOF 返回 -1
字符串数组
char *a[];
char a[][10];
1 | int main(int argc, char const *argv[]){ |
busybox