dfkt.net
当前位置:首页 >> int *p=(int *)A 这后面的 (int *) A 里面的 (int *) 怎么理解啊? >>

int *p=(int *)A 这后面的 (int *) A 里面的 (int *) 怎么理解啊?

int * 就是整形指针的意思加上括号就是强制类型转换就是把a强制转化成指向a的地址 赋值给p

int *(&p)是指针变量的引用. 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值.未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误. 引用就是给变量起个别名 ,这种变量必须初始化 . 如int *a = &b; int *(&p) = a; p不占用内存,它只是a的别名,就像一个人两个名字而已. 所以p指针所指向的内容与a指针所指向的内容相同,即*a == *p; p在内存中存放的地址与a在内存中存放的地址相同,即 &p == &a.

首先p是一个指向整型指针变量的指针变量.a是一个整型2维数组,p=(int**)a;这句话就是强制类型转换后,让p指向数组a的首地址.

int *p 表示 *p 是一个 int 型,p是一个指向int型数据的指针.int **p表示 **p是一个int 型,*p是一个指向int *型数据的指针,p是一个指向int **类型数据的指针.

int a [4][10] ,*p; p=&a[0][0];这样才正确,p是一级指针,a是2维数组名,算是二级指针了,因此p=a是不行的.int a[9],*p; p=a;a这里是数组名,是首地址,算是一级指针,因此p=a是正确的

int *p = a; // 相当于int *p = &a[0];int *q = &a[5]; // 结合上式,q - p相当于5 - 0,所以结果为5根据定义,int a[] = {1,2,3,4,5,},a[5]属于越界访问,而a[4] = 5,因为数组索引值从0开始.

int *a[3] 和 int *(a)[3]没有区别,这个括号是多余的.如果你问的是int *a[3] 和 int (*a)[3]的区别,则:(1)int *a[3] 中 a是数组,数组中每个元素是个int类型的指针;(2)int (*a)[3]中 a是指针,这个指针指向一个长度是3的int类型数组. 其实,这类问题关键就是如何理解(),这里()就是优先操作,先操作(*a),是个指针,后面就是int [3],是个数组.

没错这就和一般的赋值语句一样的,把a的地址存到了指针变量p的内存里.你说的这个a变量的起始地址,“起始地址”这个是没有必要的,

int *(*f)(int*a,int len) 定义一个指向 指针函数 的指针f int(*f)(int x); 定义一个指向 函数 的指针 f

--------------指针---------------- int a=10; int *p=&a; -------------指针的指针----------- int b=20; int *p=&b; int **p2p=&p; -------------简单数组----------------- int c[10];//整数数组,含有10个整数元素 也就是说每一个元素都是整数 --------------指针数组--------------

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.dfkt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com