C语言指针复习
2014-07-15 23:58
162 查看
我们知道,指针是C语言中的一个重要概念,也是C语言的一个重要角色。
主要体现在:
1、可以有效地表示复杂的数据结构
2、能够动态的分配内存
3、方便的使用字符串
4、有效而方便的使用数组
5、在调用函数的时候能获得1个以上的返回结果
6、能够直接处理内存单元地址等
掌握指针的应用,可以使程序简洁、紧凑、高效。
一、指针变量的定义
1. 定义方式: 类型标识符 *指针变量名;
2. 指针变量的三要素:
指针变量的类型:和其所指变量的类型一致
指针变量的值:另一个变量在内存的地址
指针的名字:起名同普通变量
3.说明:标识符前面的*,表示该变量是指针变量,但是*后才是指针变量的名字。
二、指针变量的赋值
1.指针变量名=某一地址;(&取某一地址符)
2.指针变量名= 另一个已赋值的指针变量
如图
三、 指针运算
p++,q++执行完成之后
我们看到p移动了4个字节,而q只移动了一个字节。
因为p指向的int型占用4个字节空间(一般情况),自加一后指向ffc4,而char型占用1个字节,所以q指向ffd1
四、修改所指向变量的值
六、调用函数返回多个结果
七、指针与数组
将数组当做函数参数传入时,会自动转为指针
1.定义字符串的两种方式
① 利用数组
特点:字符串里面的字符是可以修改的
使用场合:字符串的内容需要经常修改
②利用指针
使用场合:字符串的内容不需要修改,而且这个字符串经常使用
综上:数组定义字符串相当于变量,而指针定义字符串相当于常量
以上是我对C语言指针的一点理解,实乃冰山一角,有不足的地方我们可以一起学习,共同提高。
主要体现在:
1、可以有效地表示复杂的数据结构
2、能够动态的分配内存
3、方便的使用字符串
4、有效而方便的使用数组
5、在调用函数的时候能获得1个以上的返回结果
6、能够直接处理内存单元地址等
掌握指针的应用,可以使程序简洁、紧凑、高效。
一、指针变量的定义
1. 定义方式: 类型标识符 *指针变量名;
2. 指针变量的三要素:
指针变量的类型:和其所指变量的类型一致
指针变量的值:另一个变量在内存的地址
指针的名字:起名同普通变量
3.说明:标识符前面的*,表示该变量是指针变量,但是*后才是指针变量的名字。
二、指针变量的赋值
1.指针变量名=某一地址;(&取某一地址符)
2.指针变量名= 另一个已赋值的指针变量
//例子1 int i = 0; int *p = &i;//方式一 int *q = p;//方式二
如图
三、 指针运算
//例子2 int *p,a; char *q,b; p = &a; q = &b; p++; q++;
p++,q++执行完成之后
我们看到p移动了4个字节,而q只移动了一个字节。
因为p指向的int型占用4个字节空间(一般情况),自加一后指向ffc4,而char型占用1个字节,所以q指向ffd1
四、修改所指向变量的值
int a = 10; int *p = &a; *p = 20; printf("%d\n",a) ;//此时我们看到a的值通用指针将其修改为了20五、在函数内部修改外面变量的值
void change(int *n); int main(){ int a = 10; change(&a); printf("%d\n",a); } void change(int *n) { *n = 20; }
六、调用函数返回多个结果
#include <stdio.h> int change(int a, int *p); int main() { int a = 10; int b = 20; int rs = change(a,&b); printf("rs=%d, b=%d\n", rs, b);// a=20, b=30 return 0; } int change(int a, int *p) { *p += a; return a+10; }
七、指针与数组
将数组当做函数参数传入时,会自动转为指针
void change(int array[]); int main() { int ages[5] = {10, 11, 19, 78, 67}; change(ages); return 0; } //利用一个指针来接收一个数组,指针变量array指向了数组的首元素 void change(int *array) { printf("%d\n", array[2]); //printf("%d\n", *(array+2)); }八、指针与字符串
1.定义字符串的两种方式
① 利用数组
char name[] = "csdntest";
特点:字符串里面的字符是可以修改的
使用场合:字符串的内容需要经常修改
②利用指针
char *name= "csdntest"特点:字符串其实是一个常量字符串,里面的字符是不能修改
使用场合:字符串的内容不需要修改,而且这个字符串经常使用
综上:数组定义字符串相当于变量,而指针定义字符串相当于常量
以上是我对C语言指针的一点理解,实乃冰山一角,有不足的地方我们可以一起学习,共同提高。
相关文章推荐
- c语言复习笔记--指针定义
- C语言复习之结构体和指针
- [复习C语言]指针
- C语言复习 指针和动态分配内存
- C语言 内存分配 地址 指针 数组 参数 实例解析 (C语言复习)
- C语言复习 指针和动态分配内存
- C语言复习之指针数组
- c语言复习2值指针实战
- 复习C语言系列二:动态调用函数指针数组
- 【C语言复习(十八)】数组参数和指针参数
- C语言 指针总结(复习)
- c语言指针的复习
- 【C语言复习(四)】指针基础
- C语言复习 -- 指针自增、自减以及*
- C语言复习 多级指针
- C语言系列之 指针与数组总复习视频教程
- 【C语言复习(十七)】多维数组和多维指针
- C语言复习 多级指针
- C语言复习1之指针
- 【C语言复习(十三)】数组和指针