已知int i,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是。
A)i=*(*(x+1)+1); B)i=x[1][1];
C)i=*(*(x+1)); D)i=*(x[1]+1);
看到别人解释说与x相对应的指针是 int (*p)[4]; 这是对的吗 请详细介绍题目
int (*p)[4]与x[3][4]
请单独告诉我int(*p)[4]的概念 实在不懂它跟x[3][4]的联系
像 int (*p)[4] 这种,首先 如同 int a int *pa 之类的, 都是声明. 而声明中只有那个未定义的标识符是变量名, 其余的部分都表示声明它的类型. 如 int a, 表示 a是一个int型变量. int *pa 表示 pa 是一个 int* 型变量. 同样 int (*p)[4] 表示 p 是一个 int (*)[4] 型的变量, 这个类型的含义从声明的变量名开始读, p 表示一个变量 ----> *p 表示 p是一个指针变量 ----> (*p)[4] 表示 每个指针指向一个包含4个元素的数组 ----> int (*p)[4] 就表示 这个指针指向的那包含4个元素的数组,数组中每个元素都是int型.
类似的, 像 int a[3][4][5] 表示的是由 a[0] a[1] a[2] 这3个元素构成的一个数组, 这个数组中每个元素都是一个 int (*)[4][5] 类型, 之所以a[3] 能被 (*) 替换, 也是数组名本身就表示了数组首元素的地址. 对数组名进行+1的移位, 都是移动一个数组元素大小, 针对 int a[3][4][5] , a+1 就从 a[0][0][0] 移动到了 a[1][0][0], 因为这个数组每个元素大小是 4 x 5 = 20 个int 类型的大小.
为什么C表示[1][0] 怎么看出来的
其他选项表达什么
x数组首地址,x+1就算x[1]的地址,*(x+1)就是x[1][0]的首地址,再*就是它的值了
可以把x看成int[4] 类型的数组 x[3]
什么意思
追答int (*p)[4] 是个数组指针 就是数组里面存放的是地址
int *p[4] 是个指针数组 是指向的数组
c语言指针选择题求解
1.选C。int a,*p;定义了一个整型变量a以及整型指针p;因此p=&a;p可以存放a的地址。2.选B。int a,*p=&a;因为a是一个变量,不存在*a这一个用法。3.选D。pp未定义错误。C是正确的,p1、p2以及p都是整型指针。4.a是整型变量,p是一级指针a的地址。q是二级指针p的地址。5.q指向null。所...
c语言:用指针输入两个数组|练习题
一、题目 利用指针输入两个数组 二、代码截图【带注释】三、源代码【带注释】使用指针实现数组输入功能 代码包含以下关键部分:1. 定义两个数组a和b,用于存储输入的数字。2. 通过指针pa和pb分别指向数组a和b的首元素。3. 输入第一组数组:使用for循环读取用户输入的5个整数,存储在数组a中。4. 输...
C语言 关于指针的选择 求教高手
①答案是为B ②*p1=*p2;的意思:【p1指向的地址的内存块的值为p2地址指向内存块上的值】③p1=p2;的意思:【p1指向的地址为p2指向的地址】④为了加深你对指针的理解,我们可以这么认为:p1是一张纸条,上面写着房间号,p2也是。p1=p2;是把p1纸条上的房间号擦掉,改成p2纸条上的房间号。p1=*p2...
C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...
C语言关于指针的问题*++p与*(p--)
printf("%d ",*++p);\/\/++和*都是从右往左结合两者优先级一样所以和上句话一样*p=pa2]printf("%d ",*(p--));\/\/后-- 也就是先打印*p 在自减, 所以还是打印p[2] p -- p=p-1 *p=a[1]p+=3;p=p+3 所以 *p=a[4]printf("%d %d ",*p,*(a+3)); \/\/a+3 就是a...
关于c语言指针的一些问题
首先 你要告诉我 a 的类型 如果 a 是非指针型变量 那么 *p=a 是正确的 他表示 指针p 指向的单元 内容为 a (当然 如果a是数组名的 因为数组名也是指针型的 所以 就是错误的) 2,如果a 数组名 那么就是正确的 他表示 指针p 指向的单元 内容为 a [0] 3、a 是数组名的...
请高手帮我解决一下这道C语言题目,谢谢!
1、1234567 s1指针指向1,s2指针指向7 t=*s1++ s1指针指向2(t得到1的值 1)s1=*s2-- s2指针指向6(值发生改变1734567)s2=t; (值发生改变1734517)2、s1指针指向2,s2指针指向6 t=*s1++ s1指针指向3(t得到2的值 7)s1=*s2-- s2指针指向5(值发生改变1714517)s2=t; ...
c语言 指针选择题 164.题怎么做?
B选项。(p[1]+2)不能表示a[1][2]。p[0]指向a[0],同时也是指向a[0][0](a[0]与a[0][0]地址相同),p[1]指向的是a[0][1],p[1]+2是把指针再往后移动两次,依次指向a[0][2]和a[1][0],最终p指向的是a[1][0],故*(p[1]+2)代表a[1][0]的值。有什么问题请留言...
三道C语言题目,求大神(用指针的方法)。
=c)j++;return s;}int main(int argv,char *argc[]){char s[300],c;printf("Input a string: ");fgets(s,300,stdin);printf("Input a char: ");c=getchar();fflush(stdin);printf("After deleted,the string is: %s\\n",delchar(s,c));return 0;}运行样例:(3)include "stdio...
c语言,关于指针
不知道你是否有看清楚题意 (3)、指针加*,指向指针加**,假设有一个整形的指针变量为*p,那么如何再定一个变量指向*p呢,自然是int **pp;(4)、如果pp是指向指针的指针,也就是双重指针,那么p为指针,将指向指针的指针指向指针自然就是**pp=&p;(5)、双重指针取值和赋值,**pp就是取值...