C 语言之指针

一. 定义指针

指针定义的三要素:

1. 数据类型

2. 变量名

3. 初始值

Eg: int *a = NULL, char *b = NULL, float *c = NULL; 

注:NULL表示为空,恒为0

指针变量的大小仅跟操作系统的位数有关,32位操作系统占4个字节,64位操作系统占8个字节与long型变量类似.

int char float表示指针所指向的存储空间对应的数据类型,与指针本身无关

二. 指针的运算符

1. &为取地址的单目运算符

2. *与指针连用则为取该指针指向空间的内容

Eg: int number = 5; int *p = &number; *p -> number; (->表示等价)

3. %p为指针打印输出的格式控制符,将其打印显示为地址编号十六进制表现形式

4. &与*为互逆运算

三. 指针获取空间内容

int a = 6; short *p = &a;

如上操作可以通过编译,但指针p通过*取内容时,一次能取多少个字节的空间,取决于指针定义时的函数类型

如果指针的类型与其指向的空间类型不匹配,地址依然可以被保存,但是指针在取内容运算和算数运算时可能得不到正确结果.

四. 指针与数组

1. int array[10] = {0}; 

&array与array的地址相同,但其类型部同,&array的类型自增运算则加为整个数组长度,而array自增是一个元素的长度,并且二者均不能被修改.

&array 的实际数据类型是  

int (*array)[10] 为数组指针 为指向10个元素的指针

int *array[10] 为指针数组  为有10个元素的数组,每个元素都是指向整型的指针

2. sizeof()是取字节运算符,可以获取数据类型和变量的字节数

3. const关键字修饰一个变量为只读变量(不允许修改)const出现在指针类型的左侧表示指针指向的空间通过*运算符运算时不能修改,出现在指针类型的右侧表示指针变量不能重指向.同时出现,表示指针变量既不能重指向,其指向的空间也不能被修改

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,857评论 3 44
  • 指针是一种数据类型 数据类型有哪些特性? 1、作为参数传值; 2、作为函数的返回值; 3、声明成变量; 为什么要声...
    ttys苹果核阅读 3,332评论 0 2
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,166评论 1 51
  • 一百个人眼里有一百种乔布斯。 但直到我昨天去电影院看了名为「乔布斯」的电影之前,我都一直没把他往娱乐这个方向去想过...
    haru阅读 3,590评论 0 3

友情链接更多精彩内容