Q4C语言
⑴ c语言/指针/ int *p[4]和int (*q)[4] 的含义和区别
前面是指针数组,是一个数组!P里面装的是4个指针。后面这个是数组指针,是一个指针!(意思是一个指向数组的指针,该数组有4个元素)
⑵ c语言 从键盘输入一个4*4整数矩阵
#define N 4
void main()
{
int a[N][N];
int i,j,max,p,q;
printf("输入4*4矩阵:\n");
for(i=0;i<N;i++)
for (j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("输入的矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++) printf("%4d",a[i][j]);
printf("\n");
}
max=a[1][0];
p=1;q=0;
for(i=1;i<N;i++)
for(j=0;j<i;j++)
if(a[i][j]>max)
{
max=a[i][j];
p=i;q=j;
}
a[q][p]=max;
printf("处理以后的矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++) printf("%4d",a[i][j]);
printf("\n");
}
}
⑶ 在C语言中 int &q 是什么意思
正宗的C语言中应该没有这种写法。C++中有一个叫“引用”的基本类型,它是一个已经存在的变量的别名,int &q这就是声明一个int型的引用。不过引用在声明时必须初始化,所以正确的写法是int &q=a;(其中a是已经声明过的int型变量)。
⑷ C语言中:若有定义语句:int a[4][10],*p,*q[4];且0≤i<4。
(1)与2维数组相似,但绝不是2维数组。它是一个指针数组,它的每一个元素均为一个地址
(2)如题,p是一个一级指针可等价于一维数组,你的第一个式子估计不会成立,原因:p[i]应该存放一个数据,而a[i]是二维数组a的第i列的首地址,类型不匹配(你的p也没有赋初值,是个野指针,即指向不确定空间,有的编译器可能能通过,不过运行会有问题),第二个式子的意思是把a的第i列的首地址赋值给p(此时p就相当于一个一维数组,它能访问a的第i列的元素);
⑸ C语言中:*q[4]是几维数组大侠指教!
这个叫数组指针就是你的数组q中 存了四个指针, 每个指针指向什么我就不说了。
至于你的问题还得斟酌斟酌,如果存的指针指向一个数组的话就是二维的,另外就不知道了
⑹ C语言中,int x[]={ 4,3,2,1 },q,*p=&x[1]; 则执行语句 q=(*--p)++ 后,变量 q 的值为多少
变量q的值为4.
解释一下,根据声明来说,p是指向数组x第二个元素(3)的指针,这个q=(*--p)++计算顺序是q=(*(--p))++,即,先对p进行自减运算,自减以后p指向数组第一个元素(4),然后对这个指针取值得到4,然后是后缀自增运算,结果是p指向的元素自增了,但是返回值为自增之前的值,即4.
⑺ C语言中,(*q)[4]这是几维
(*q)[4] 不是数组,是一个数组指针!
例如:定义一个指针 int (*q)[4]
这个指针用来指向一个大小为 5 的 int 型数组.
⑻ c语言,(*q)++和q++有什么不同
(*q)++ 是指针q所指单元值加1;
q++是指针q的值值加1(即指向下一个元素)
⑼ 已知q与n,求等比数列之和: 1+q+q2+q3+q4+…+qn c语言
有问题继续问我
⑽ C语言int (*q)[5]表达什么意思
q是一个指向数组长度为3的整形数组的指针。(*q)说明是指针,右边[]说明是一个指向数组的指针,左边的int 说明是个整形数组的指针。 这钟指针识别就得这样右左右左一步步定位。
int a[3][3]编译的时候可以认为成int a[][3]或者int (*a)[3],所以可以赋值给q。但要是 int (*q)[5]就不行了,类型不同,而且没有隐式转换的方法。
跟你下面讲得 q = a不一样,下面那个int 被隐式转换成了 int*。
最后给你一个复杂的例子你体会一下这种复杂的定义吧:
char* (*(*a[N])())()。定义了一个包含N个指向返回字符指针的函数指针的数组~~