【C语言】【指针相关知识小结】

原创 2016年05月30日 15:03:54

1.int *p = NULL 和 *p = NULL的区别

        int *p = NULL指的是将一个指针初始化为NULL,具体过程为 int *p; p = NULL。

2.&a与a的区别

    int a[5];

    int *p = &a;//??

    int *q = a;//??

    这样的代码对吗?


解释:

&a得到数组的地址。

a表示数组首元素的首地址。

&a的a的值一样,两个指向的位置是相同的,但是意义不同。


3.指针和数组的定义与声明


什么是声明和定义:

C语言中的对象必须只有一个定义,但是它可以有多个extern声明。

定义是一种特殊的声明,它创建对象;

申明简单地说明了在其他地方创建的名字,它允许你使用这个名字。

定义

只能出现在一个地方

确定对象的类型并分配内存,用于创建新的对象。

例如: int my_array[100];

声明

可以多次出现

描述对象的类型,用于指代其他地方定义的对象(例如在其它文件)。

例: extern int my_array[];

 

       定义数组,会为其开辟空间,而数组名作为首元素的地址,定义对于相同的内容,用不同的数组表示,那么首元素的地址不相同,因为每次定义数组都会为其开辟一块空间;

      对于相同的内容,用不同的指针指向,那么指针变量的保存的地址是一样的,因为对于赋值的内容是固定存在的,在内存中存在某一固定位置。


      对于数组和指针的定义和声明,有两种特殊情况:

          a、定义为数组,声明为指针

        b、定义为指针,声明为 数组

      如果对于声明和定义的概念不是很清楚的话,很容易会滥用这两种情况:

    定义为数组,声明为指针的话,指针只能访问四个字节,32个bit位的大小,所以想访问数组的时候就不能正确的访问到数组的内容;

    定义为指针而声明为数组的时候,数组能够访问一个数组的大小,而指针只有4个字节,所以想访问指针的时候就不能正确的访问到指针的内容了。


4.指针和数组的对比

wKiom1ZUMI2iceKcAAFe_1H2bFg479.png











版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言指针知识点

指针基本概念  指针:就是内存的地址编号 指针变量:用来存放地址变量,通常所说的指针就是指针变量 定义指针 :格式  指针所指向的数据类型 *指针变量名称 int * a 作用 在定义变量的时候,*是...
  • BianHuanShiZhe
  • BianHuanShiZhe
  • 2016年01月03日 13:38
  • 760

【c基础知识】C指针详解(经典,非常详细)

前言:复杂类型说明     要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有...
  • baidu_39511645
  • baidu_39511645
  • 2017年10月12日 20:43
  • 989

线性表知识点总结一(第三天)

1. 线性表(List): 定义:由零个(称为空表)或多个数据元素组成的有限序列。 数据类型:是指由一组性质相同的值得集合及定义在此集合上的一些操作的总称 数据类型分为原子类型(不可再分解的基本...
  • qq_31151129
  • qq_31151129
  • 2016年07月20日 16:07
  • 420

C语言再学习 -- 再论数组和指针

之前有总结指针数组,但是现在看来总结的太简单了。好多重要的知识点都是一带而过的。本想在后面添加后来想想算了,还是再写一篇文章来详细介绍数组和指针这对冤家吧。 之前总结的,参看:C语言再学习 -- 数...
  • qq_29350001
  • qq_29350001
  • 2017年01月18日 10:48
  • 1901

C语言中关于指针的数据类型和指针运算的小结

有关指针的数据类型小结 记忆诀窍: 容易混淆的几个int *p[n] 、int (*p)[n],其中int *p[n]是一个数组,数组的元素是指针;int (*p)[n]是个指针,是一个指...
  • xiaoranzhizhu
  • xiaoranzhizhu
  • 2014年09月14日 16:36
  • 788

c语言函数指针学习心得

1.指针函数的定义     顾名思义,指针函数即返回指针的函数。其一般定义形式如下:       类型名*函数名(函数参数表列);     其中,后缀运算符括号“()”表示这是一个函数,其前缀运...
  • huang_jinjin
  • huang_jinjin
  • 2012年03月20日 20:27
  • 4199

关于C语言的副作用和序列点~

******副作用:      指的是对数据对象(http://blog.csdn.net/qq_37385726/article/details/62896617)或文件的修改。        ...
  • qq_37385726
  • qq_37385726
  • 2017年03月17日 20:29
  • 123

C语言经典算法100例-068-练习使用指针3

直接看代码和注释吧。。。 //利用指针实现数组的滚动 本例实现数组像右滚动几位 #include #include int main() { int arr[20]; int ...
  • mrbourne
  • mrbourne
  • 2014年05月04日 22:54
  • 776

指针的基本知识点

#includevoid A(int *c) {//把a指向的地址传入给一个形参指针c,c存的是a指向的地址 int b; c = &b;//b的地址赋值给c,改变的只是形参指针的值...
  • hello_sheep
  • hello_sheep
  • 2017年06月09日 12:00
  • 206

c语言面试题 指针30个常错题型

来源:http://blog.chinaunix.net/u1/58640/showart.php?id=1354073 记下来以备不时之需。 1. char * const p; char cons...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2013年12月28日 20:54
  • 20441
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C语言】【指针相关知识小结】
举报原因:
原因补充:

(最多只允许输入30个字)