------- 自己总结的知识纯手打--------
什么是指针
指针是一种特殊的变量,他存放的是地址
int *i_pointer; //用来存放变量i的地址
i_pointer=&i;//取地址

操作符
* 取值操作符
& 取地址操作符
第一个 * 为定义指针
第二个 * 才是取值操作符

指针和指针变量的区别
-
指针:知道了一个变量的地址。就可以通过这个地址访问这个变量,因此,又把变量的地址成为该变量的指针;
-
指针变量:C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。
-
指针变量的值(即指针变量中存放的值是地址,也就是指针。)
定义一个指针

- 可以用赋值语句使一个指针变量得到另一个变量的地址,从而使他指向一个该变量。
pointer_1=pointer_2;
- 指针变量前的 * ,表示该变量类型为指针型变量。
一般形式为:类型说明符 *变量名 - 其中,* 表示这是一个指针变量,变量名为定义的指针变量名,类型说明符表示本指针变量指向的变量数据类型。
float *pointer_1;
//指针变量名为pointer_1;而不是*pointer_1
- 在定义指针变量时必须指定基类型。
- 只有整型变量的地址才能放到指向整型变量的指针变量中。
---该例子就是错误示范---
float a;
int *pointer;//应该是float
pointer=&a;
- 指针变量只能存放地址(指针),如果将一个整数赋给一个指针变量,编译器也会把它当成地址处理。
- C语言中提供了地址运算符 & 来表示变量的地址。一般形式为==&变量名==
- 如&a表示变量a的地址,&b表示b的地址;变量本身必须预先声明。

&和*补充说明
&*pointer_1;
- 两个符号的优先级相同,但按自右向左方向结合,所以&*pointer_1=&a,即变量a的地址。
pointer_2=&*pointer_1;//把地址赋给pointer_2
*&a
- 先进行&a运算,得到a的地址,再进行*运算。即&a所指向的变量,也就是变量a。
(*pointer_1)++
- 相当于a++

数组和指针

int a[10];
int *p;
p=&a[0];//取数组第一个元素地址

int a[10];
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d",*(a+1));
}
int a[10];
int i;
int *p;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(p=a;p<(a+10);p++)
{
printf("%d",*p);
}
------待更新 2020.3.27
本文介绍了C语言中的指针概念,包括指针的定义、操作符的使用、指针与指针变量的区别、如何定义指针变量,以及&和*运算符的详细解释。此外,还探讨了指针在数组中的应用。
764

被折叠的 条评论
为什么被折叠?



