指针那些概念

1. 指针数组和数组指针

int *p[3],由于[]的优先级高于*,所以是这样结合的:int *(p[3]),这是一个数组,数组元素是指向int型的指针.可以这样赋值:

int a[3][4];
int *(p[3]);
for(int i=0;i <3; i++) {
    p[i] = a[i];
}

指针数组的每个元素为指针,指针指向一个一维数组的首元素.

int (*p)[3], 这样则是一个指针,该指针指向一个有3个元素的一维数组,p+1,则是移动了一个一维数组的地址.可以这样赋值:

int a[3][3];
int (*p)[3];
p = a;

同时也可以用typedef来帮助理解:

数组指针:

typedef int p[3];
p *a;

指针数组:

typedef int *p;
p a[3];

不定期更新

时间: 2024-08-11 12:49:39

指针那些概念的相关文章

C语言之指针基础概念

开通博客园以来第一次写随笔,就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简介一下指针的概念好了.指针本身也是一个变量,只不过这个变量的值比较特殊,它不是常规的整型数或者浮点数,而是指向另一个变量地址的值.通过指针的值可以知道另一个变量的地址以及存在该地址中的具体数值(该数值可以是整型,浮点型,结构体,甚至也可以是一个指针),通过指针得到另一个变量的

指针的概念

指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区.让我们分别说明. 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*ptr)[3]; int *(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型.这是指针本身

&lt;22&gt;【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = &num; //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

C指针解析 ------ 指针的概念及要素

 本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 指针在C语言中的地位,不用多说. 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存中的一个地址.指针有四个要素,分别是指针的类型,指针所指向的类型,指针的值或者指针所指向的内存区,还有指针本身所占据的内存区.所以要理解指针,就必须要搞清楚这四个要素.下面分别来说. 先来看一个例子,通过例子来直观的看指针这四个要素到底代表什么: 例1. (1) int *ptr

黑马程序员 C语言:指针的概念

指针的基本概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问这些内存单元,必须为每个内存单元编上号.根据一个内存单元的编号即可准确地找到该内存单元.内存单元的编号也叫做地址.既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针. 指针与变量 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.因此,一个指

C语言指针的概念

在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问这些内存单元,必须为每个内存单元编上号.根据一个内存单元的编号即可准确地找到该内存单元.内存单元的编号也叫做地址.既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针. 内存单元的指针和内存单元的内容是两个不同的概念. 可以用一个通俗的例子来说明它们之间的关系.我们到银

C++指针的概念解读[超详细]

转自:http://www.codeceo.com/article/cpp-pointer.html 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区.让我们分别说明. 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*ptr)[3]; int *(*ptr)[4]; 指针的类型 从语法

智能指针的概念和实现

概念 智能指针从字面上看,首先是一个对象,而它的行为(或接口)是在模拟一个指针,但又比指针更加智能.指针的主要作用是引用资源,指针的最大问题是在复杂情况下很难管理好它指向的资源的生命周期.因此智能指针要做的就是在管理资源生命周期这件事情上更加"智能".C++11已经在<memory>模块中提供了常用的三种智能指针,它们分别是 unique_ptr, shared_ptr 和 weak_ptr. 但理解智能指针的原理和实现细节也是十分有意义的.了解原理可以保证更加合理的使用标

8.30 指针基础概念

指针的兼容性 sizeof的结果是一样的就是兼容的. int *p; unsigned int ui = 10; p = &ui;  //正确 指针相加: 不是以整数的形式增加,而是移动 数组名与指针: 函数应该传数组名 : #include <stdio.h> void func(int *a) { a += 3; *a = 100; } int main() { int a[10] = {1,2,3,4,5,6,7,8,9,0}; int i; func(&a);//这里传