int * p = (int *)malloc(10);的解释是,在内在中分配连续10个字节的空间,并把第一个字节所在的地址强制为int *型指针值赋给int *型指针p。看,p已经有指向了,给它指向的单元赋值就有地方存储了,所以*p就是合法的。int * q;的解释是,声明一个int *型指针q。看,它还没有指向,叫...
int*p;p=&a;//这种方式正确printf("p = %d\n",p); 结果:p = 6618636 变量p存放的a的地址 重点: 先了解,指针类型,int *p,虽然是*p在一起写着,但是变量名叫p,类型为int *,也就是整型的指针类型,当你理清变量名和类型之后,你对指针的理解程度已经懂了大半了 。 (2)第二种定义赋值一步完成 int*r...
分析:选项 B 定义了一个指针变量 p,即 int *p,但随后将一个整数值 m(而不是地址)赋给了指针 p。指针类型变量应该存储地址,而非直接存储一个整数值,因此这会导致类型不匹配的错误。在 C/C++ 中,指针变量应当指向一个地址,而不能直接赋值为一个普通的整数。因此,该选项错误。 C. int &p=*m; 错误。
如果有下面的定义和赋值,则使用[ ]不可以输出n中data的值。struct SNode{unsigned id;int data;}n,*p;p=&n; A. p.d
int *p=&a 其实是两个语句 等价于 int *p; p=&a;如果a是int型,int *p=a是错误的,正确的应该是 int *p; p=&a;在定义的时候不能给p直接赋值整型,只能赋值int型地址 即 &a;如果要给p指针指向的地址赋值,就可以*p=a;但不能在定义*p的时候直接赋整型。
byte b1=3,b2=4,b; b=b1+b2; //错误 运算时会自动转换为int类型 而int类型的值不能赋值给byte 需要强制类型转换 b=3+4;//正确 常量具有常量类型优化机制 可以直接识别为byte(原因:常量运算,先把结果算出来再赋给一个变量) 当使用+、-、*、/、%运算符对
在本题的赋值int * p = 100 ; int*p表示定义了一个int类型的指针变量p,而用来赋值的却是一个int类型的常量100,不是一个int类型变量或常量的地址。所以该赋值方法错误。 指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量[1]一样,必须在使用指针存储其他变量地址之前,对其进行声明。指针...
设有如下定义:struck,sk{mt a;float b;}data;Int*p ;假设要使P指向data中的a域,那么正确的赋值语句是 ( ) A. p=
设有如下定义, struct sk { int a; float b; }data; int*p; 若要使P指向data中的a域,正确的赋值语句是( )
二维数组a,a[0]表示第一行的行指针,是int*类型,自然赋值给p,不需要加&。而上面说了*p2取值是一个指针,所以给p2赋值需要一个指针的地址,所以&a[1]要加&符号取地址。PS:a作为数组名是一个指针常量,它的类型就是int(*)[2],表示指向第一行的行指针的地址。所以可以直接赋值p2=a;。