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

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

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

int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; int *p = (int*)a;//a本身是二维数组,相当于二维指针,所以,与p不是相同的类型,p 是int*类型,所以,需要进行强制转换,赋值才可以.

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

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

int *a表示a是一个指针,或者也可以是一个数组名,你可以理解为数组 既然a是指针,那么在指针前面加*号表示对该指针所指向的地址取值 所以*a=i;就是把i的值赋值给a指针所指向的地址的值,说起来有些拗口,其实就是说改变了a这个地址内存的值*n=*n+1;也是一个道理,表示n指向的地址的值加1 a++;表示a地址加1,就是说本来a指向0x0000,那么现在就变了,a会指向另外一个地址,那么这个地址对应的值也会相应的改变.建议:先找一本C语言的书,把指针一章的基本概念多理解一下,这些都是基础的东西,需要多体会.

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],是个数组.

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

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