为您找到"
下列语句中正确的是()。A.int * p;i=8; p=&i;B.int * p,i; p=&i;C...
"相关结果约100,000,000个
int j,a[10],*p;相当于 int j;int a[10];int p;所以 A.p=p+2是合法的,是指针运算;不过p没有初始化,其值不确定 B.p=a[5]不合法,a[5]是值不是指针,不能赋值给p C.同B D.不合法,(j+2)是表达式 ,不能取其地址
int (*p) = (&a);这又是一个声明语句(两个声明中夹杂着一个赋值语句,严格来说编译器是有警告甚至是错误的),不推荐这么写,但它的意思如上面所说的 ,*p等于1;(*p) = (&a); 这又是赋值语句,它的意思就是在p所指向的地址里放上一个值,这个值就是a的地址,所以这时,*p不等于1了...
执行该语句的结果为-12,没有错误。注意赋值运算符的顺序为自右到左。计算过程如下:首先执行a*a=9,然后a-=9=(a=a-9)=-6,执行后a=-6,然后执行a+=a=(a=a+a)=-12。所以说正确答案是-12。
C.定义语句中的P只能存放double类型变量的地址 D.定义语句中,*P=&a把变量a的地址作为初值赋给指针变量P 参考答案:A 参考解析:在变量定义double a,* P=&a;中,*号是一个指针运算符,而非间址运算符,所以A错误。6[单选题] 若有定义语句:int x=10;,则表达式x-=x+x的值为()。A.0 ...
要回答你的这个问题,不妨先根据你的问题先编写一段小的示例程序:include <cstdio>include <cstring>using namespace std;int a[3][4];int main(){memset(a, -1, sizeof(a));int i;for( i = 0; i < 3; i++){printf("&a[i][0] = %d\n", &a[i][0]);printf("a + i ...
区别很大。第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。int
初值表只可以用于数组,不可以用于指针,而且只可以用于数组初始化时,不可以用于二次赋值。int a[2] = {1, 2}; //正确int *p = {1, 2}; //错误,初值表不可用于指针int a[2];a = {1, 2}; //错误,初值表只能用于数组定义时的初始化 记住...
指针p指向a[1]的地址 a[1]是 4 数组下标从0开始 x=0 *(p+0) 就是 4 x=1 *(p+1) 指针向前移动一位 6 x=2 *(p+2) 向前移动2位 8 y = 1+4+6+8
头文件问题你必须好好看看C或者C++的书籍main函数包括了一条申明语句和一个for语句循环块int x = 8;它申明了一个int类型的变量x并初始化为8for从8一直到1循环,在循环中会判断是不是被3整除,如果不被3整除,则输出自身并减一次1;、结果是8,5,4,2include<stdio.h> //头文件main(){int...
设a=12,则表达式a*=a/5的值: (5) ;3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;} 则循环语句执行完后,z值为 (6) 。4. 变量的指针就是指该变量的 (7) 。5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则...