您的位置:首页 > 编程语言 > C语言/C++

C语言指针复习

2014-07-15 23:58 162 查看
我们知道,指针是C语言中的一个重要概念,也是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语言指针的一点理解,实乃冰山一角,有不足的地方我们可以一起学习,共同提高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: