www.5213.net > 若有定义:int A[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)...

若有定义:int A[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)...

int (*p)[4];表明p是行指针,即p指向二维数组中的一行.p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址.p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址.p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第3个元素,也就是a[2][3],*(p[2]+3)表示第2行,第3个元素的值.p+4表示第四行(从0行开始),因为a数组没有第四行,所以是错的.p[4]表示第四行(从0行开始),原因同上.*p表示a数组第0行,第0列地址,**p表示a[0][0]的值,值不会再包含元素,所以(**p)[2]是错的.

#include<stdio.h> void main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12};//对数组a初始化 int *p[3];//定义指针数组,每一个元素都是指针 int m;//定义变量m for(m=0;m<3;m++)//循环三次 p[m]=&a[m*4]; /**************开始分析循环语句*****************

我来回答程序:#include <stdio.h>#include <stdlib.h>int main(void){ int a[3][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int *p = &a[0][0]; for (int i = 0; i != 12; ++i) printf("%d ", *(p + i)); system("pause>nul"); return 0;}

int a[3][4]={1,2,3,4,5,6,7,8,9};,相当于int a[3][4]={{1,2,3,4},{5,6,7,8},{9,0,0,0}}; 因此,a[1][3]=8, a[2][3]=0;

这是个二维数组.int a【】【】第一个中括号表行数,从0开始;第二个代表列,也从0开始;数组初始化没有给出初值的数组元素被编译器自动赋值为0;int a[][3]={1,2,3,4,5,6,7,8,9,10}实际为:int a[][3]={1,2,3, 4,5,6, 7,8,9 ,10,0,0} 四行三列.

表达式sizeof(a)/(sizeof(int)*4)的值为3 sizeof(a)是a数组所占内在的字节数,int a[][4]={1,2,3,4,5,6,7,8,9,10,11} 等价于 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,0}; 它是一个3行4列的int数组.sizeof(int)*4 是一个4个元素的int数组所占的字节数.所以,表达式sizeof(a)/(sizeof(int)*4)的值就是a数组的行数,值为3.

a[1][2]是第二行第三个所以a[1][2]=6 你的数组是这样的1 2 34 5 67 8 9 打字不易,如满意,望采纳.

#includevoid main(){\x05int a[]={1,2,3,4,5,6,7,8,9,10,11,12};//对数组a初始化\x05int *p[3];//定义指针数组,每一个元素都是指针\x05int m;//定义变量mfor(m=0;m

设有以下定义:int a[4][3]={1,2,3,4,5,

好像类似问题你刚才问过一个但这次你的循环变了,那就定义正确的p就行了,p的正确类型是 int(*)[3],如下int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, (*p)[3]=a, i;for ( i=0; i 评论0 0 0

相关搜索:

网站地图

All rights reserved Powered by www.5213.net

copyright ©right 2010-2021。
www.5213.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com