首页 > 其他 > 详细

C指针

时间:2017-02-26 16:53:58      阅读:281      评论:0      收藏:0      [点我收藏+]

指针:指针是一个变量,用来存放内存地址的变量。

两个有关的运算符:*号有两个作用

1. &:取地址运算符。

2. *:声明指针变量。

3. *:取值运算符。对某个指针变量做*操作,表示取该指针指向地址中的值。

C语言中提供了地址运算符&来表示变量的地址。其一般形式为:&变量名;
如&a表示变量a的地址,&b表示变量b的地址。变量本身必须预先说明。

 

1. &:取地址运算符

int num = 10;

int *ptr_num = &num  //声明指针变量

 

2. *:声明指针变量

int num = 10;

int *ptr_num;  //声明指针变量

ptr_num = &num //指针变量赋值。&是取地址运算符

 

3. *:取值运算符

int num = 10;

int *ptr_num;  //声明指针变量

ptr_num = &num //指针变量赋值。&是取地址运算符

num = *ptr_num //对指针变量做*操作,表示取该指针指向地址中的值

 

4. **:二级指针变量,指向指针的指针。指针指向另一个指针的内存地址。

int a=10; // 定义一个int型变量a
int *p; // 定义一个int类型的一级指针变量p
int **t; // 定义一个int类型的二级指针变量t
p = &a; // 使一级指针p指向变量a的地址
t = &p; // 使二级指针t指向一级指针变量p的地址
printf("%d", a); // 输出10
printf("%d", *p); // 输出10
printf("%d", **t); // 输出10

 

5、指针和数组

int main(){

//数组名就是数组的首地址

double score[] = {19,20,35,88,66};

double *prt_score = score; //指针的声明和赋值。score是数组首地址。

printf("数组的首地址:%p\t数组首元素的地址:%p\n",score,&score[0]);

int size = sizeof(score) / sizeof(score[0]);

for(int i = 0; i < size; i++){

//printf("%.2lf\n",ptr_score[i]);     //指针不会发生变化

printf("%.2lf\n",*(ptr_score + i));  //指针不会发生变化。通过取值运算符,获取数组的值。

//printf("%.2lf\n",*ptr_score++);  //指针发生变化。每运行一次指针加1,最后指针会指向最后元素。

}

}

 

C指针

原文:http://www.cnblogs.com/chenweichu/p/6444689.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!