int*与(int*)的差别

晚上被问到一个C++的问题:

int **pa=new int* [5];

int *pb=new (int*)[5];

上面两行代码的差别是什么?

分析与实验结果例如以下:

(1)第一行代码能够在VS2010上正常执行,new出来的是一个存放int型指针变量的数组。能够存放5个这种元素。

而第二行代码则编译错误。悲剧的是VS2010在编译之前并未红线提示错误。

(2)设计了例如以下两行代码,当中第一行正常,第二行提示错误,没有定义的pbb标识符,猜測加括号后未体现类型的作用,故pbb仍没有定义。

int* paa[5];

(int*) pbb[5];

(3)经过第二步,基本确定(int*)不再是类型,而是将某对象进行强制类型转换。

在查阅操作符优先级的过程中。发现new的优先级要低于类型转换操作符的优先级,故更加确定原问题第二行代码的(int*)会优先运行,不再是int*类型。

时间: 2024-11-29 07:05:07

int*与(int*)的差别的相关文章

write(byte[] b, int off, int len)

write(byte[] b, int off, int len)就是将数组 b 中的 len 个字节按顺序写入输出流. 所以如果 b 为 null,则抛出 NullPointerException. 如果 off 为负,或 len 为负,又或者 off+len 大于数组 b 的长度,则抛出 IndexOutOfBoundsException. 如果 len 为零,则不写入字节. 否则,首先写入字节 b[off],然后写入字节 b[off+1],依此类推:最后一个写入字节是 b[off+len-

(转载)深入解析unsigned int 和 int

就如同int a:一样,int 也能被其它的修饰符修饰.除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char.int.Int是默认有符号的.2.unsigned-----无符号,修饰int .char3.long------长型,修饰int .double4.short------短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别.什么叫做有符号,什么叫做无符号这个问题其实很简单,比如

Convert.ToInt32、(int)和int.Parse三者的区别

前者适合将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]); (int)适合简单数据类型之间的转换: int.Parse适合将string类类型转换成int类型,如int.Parse(session["shuzi"].ToString()). (1)这两个方法的最大不同是它们对null值的处理方法:    Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会

关于Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height)这个方法

============问题描述============ Bitmap android.graphics.Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height) 这个方法屌爆了,不会用 后面的四个参数到底啥意思啊 不是说截的是一个矩形的x,y,宽高吗/ 为何我传入这个: Bitmap bitmap = Bitmap.createBitmap(b1, 0, 20, b1.getWidth(), b1.getHe

35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

  35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和: (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!): (4)编写测试类E,在测试类E的main方法中使用接口回调的形式来测试实现 接口的类. p

int *const && int const * && const int *的区别

ANSIC允许声明常量,常量和变量不同,常量就是不可以改变的量,用关键字const来修饰 比如:const int a int const a 以上两种声明方式是一样的,我们不需要考虑const和int的先后顺序,按照你理解的方便的一中方式进行应用. 因为const和int的顺序先后并不影响结果,因此 int const *   &&  const int *这两中情况就是一样的 所以我们只需要讨论两种情况 -----------------------------------------

int *a; int &a; int & *a; int * &a 比较

int *&v1 == v1是一个引用,指针的引用,也就是说,这是传递进来指针的别名. int i=3; int *a = &i;//这里a是一个指针,它指向变量i int &b = i;//这里b是一个引用,它是变量i的引用. 可以理解为  b is now " in the name of"  i .i 有一绰号 b int * &c = a;//这里c是一个引用,它是指针a的引用 int & *d;//这里d是一个指针,它指向引用.看编译的

int main(int argc, char * argv[]) 里的异常处理

#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { @try { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } @catch (NSException *exception) { NSLog(@&qu

编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件

#include<stdio.h> void sort(int*x,int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(x[j]>x[k]) k=j; if(k!=i) { t=x[i]; x[i]=x[k]; x[k]=t; } } } void main() { FILE*fp; int *p,i,a[10]; fp=fopen("array.out","