您的位置:首页 > 其它

<<征服C指针>>学习笔记

2017-09-09 11:32 204 查看
1.什么是指针?

在C语言标准中最初出现”指针”一词的部分,有这样一段话:

{

指针类型可由函数类型\对象类型\或不完全的类型派生,派生指针类型的类型称为引用类型.

指针类型描述一个对象,该类对象的值提供对该引用类型实体的引用.

由引用类型T派生的指针类型有时称为”(指向)T的指针”.

从引用类型构造指针类型的过程称为”指针类型的派生”.这些构造派生类型的方法可以递归的应用.

}

提及”类型”,我们首先想到的是”int类型”\”double类型”……同样,C中也存在”指针类型”这样的类型.

“指针类型”:

{

并不单独存在,它是由其他类型派生而成的.即实际上存在的类型是”指向int的指针类型”\”指向double的指针类型”….

也存在”指针类型变量”和”指针类型的值”.

}

2.首次接触指针.

以实际代码输出指针的值.

#include <stdio.h>

int main(void)
{
int hoge = 5;
int piyo = 10;
int *hoge_p;

//输出每个变量的地址
printf("&hoge: %p\n", &hoge);
printf("&piyo: %p\n", &piyo);
printf("&hoge_p: %p\n", &hoge_p);

//将hoge的地址赋予hoge_p
hoge_p = &hoge;           //至此,我们认为"hoge_p指向hoge"
printf("hoge_p: %p\n", hoge_p);

//通过hoge_p输出hoge的内容
printf("*hoge_p: %d\n", *hoge_p);

//通过hoge_p修改hoge的内容
*hoge_p = 10;
printf("hoge: %d\n", hoge);

return 0;
}


要点:

{

对变量使用&运算符,可取得该变量的地址.这个地址称为指向该变量的指针.

指针变量hoge_p = &hoge 时,称 hoge_p指向hoge.

对指针变量运用*运算符,等同于它指向的变量.如果hoge_p指向hoge,*hoge_p == hoge.

}

3.指针声明.

常见的C的声明像:

int hoge;

使用”类型 变量名”的形式.

而”指向int的指针”类型的变量,常采用这样的声明方法:

int *hoge_p;

这里,int* 是类型(指向int的指针类型),hoge_p为变量名,



int* hoge_p;

这种书写方式虽符合”类型 变量名”的形式,但在同时声明多个变量的情况时会出现歧义,

int* hoge_p, piyo_p;

//声明两个”指向int的指针”? ——并不是.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: