若有定义语句:char s[3][10],(*k)[3],*p; p=s[0]为什么是对的? s是二维数组,怎么写成了一
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 10:58:52
若有定义语句:char s[3][10],(*k)[3],*p; p=s[0]为什么是对的? s是二维数组,怎么写成了一维数组!
C语言没有多维数组,只有多个一维数组的嵌套.
举个例子给你讲吧
a[3][3]= {1,2,3
4,5,6
7,8,9 }
其实是3个一维数组a[0] = {1,2,3};a[1]= {4,5,6};a[2]={7,8,9}组成的;
a表示数组名,也代表数组首地址.此首地址并非a[0][0]元素的地址,而是a[0]这个数组的地址(虽然具体数值一样,但意义不同);所以对于2为数组a[3][3]; a+1 表示的是一维数组a[1]的地址,
*(a+1)表示的是数组a[1]中第一个元素的地址,所以*(*(a+1)+2)表示数组a[1]中第3个元素的值也就相当于a[1][2],其值为6;
(*p)[3] = a; 表示p是一个指向一维数组的指针. 这时p指向第一个一维数组也就是 1,2,3这一行. p+1表示指针指向了第二个一维数组也就是4,5,6;
用法上指针p和数组名a基本一样;
以后遇到a[m][n]不要再想象成二维数组,就想成m个1维数组编号从a[0]到a[m-1]每个数组里存了n个元素
不明白再问
举个例子给你讲吧
a[3][3]= {1,2,3
4,5,6
7,8,9 }
其实是3个一维数组a[0] = {1,2,3};a[1]= {4,5,6};a[2]={7,8,9}组成的;
a表示数组名,也代表数组首地址.此首地址并非a[0][0]元素的地址,而是a[0]这个数组的地址(虽然具体数值一样,但意义不同);所以对于2为数组a[3][3]; a+1 表示的是一维数组a[1]的地址,
*(a+1)表示的是数组a[1]中第一个元素的地址,所以*(*(a+1)+2)表示数组a[1]中第3个元素的值也就相当于a[1][2],其值为6;
(*p)[3] = a; 表示p是一个指向一维数组的指针. 这时p指向第一个一维数组也就是 1,2,3这一行. p+1表示指针指向了第二个一维数组也就是4,5,6;
用法上指针p和数组名a基本一样;
以后遇到a[m][n]不要再想象成二维数组,就想成m个1维数组编号从a[0]到a[m-1]每个数组里存了n个元素
不明白再问
若有定义语句:char s[3][10],(*k)[3],*p; p=s[0]为什么是对的? s是二维数组,怎么写成了一
若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是:A、p=s; B、p=k; C、
定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的为啥是 A)p=s; B)p=k; C
8.32 C语言,有下列定义语句char s[3][10],(*k)[3],*p
若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是______.
C语言题 执行下列语句后,*(p+1)的值是【1】.char s[3]="ab",*p; p=s;
若以下定义:char s[20],*ps=s; 则,以下赋值语句正确的是:
对于以下结构定义:struct{ int len; char str;} s,*p=&s; p->str的意思是?
若有定义语句:char s[10]="1234567\0\0",则strlen(s)的值是?到底strlen 函数计数时
若有下面的程序段: char s[]="china"; char *p; p=s; 则下列叙述正确的是________
C语言 已知:char s[10], *p = s,则在下列语句中,错误的语句是 _____. 选择一项:
C语言题:定义:char s[20]="programming",*p=s;则不能正确表示S[2]元素的表达式是?