C语言,指针 与 数组。
1.&a取数组首地址,步长一数组。a取数组首行地址,步长一行。*a取数组首行首元素地址,步长一数组。1.1这三条是正确的结论吗?1.2该结论适用于多维和一维数组吗2.①i...
1.
&a取数组首地址,步长一数组。
a取数组首行地址,步长一行。
*a取数组首行首元素地址,步长一数组。
1.1这三条是正确的结论吗?
1.2该结论适用于多维和一维数组吗
2.
①int a[2][2]={{2,3},{6,7}};
②int *p=a[0];
③int i,sum=0;
④for(i=0;i<2;i++)
⑤ sum=sum+(*(p+1)+i);
2.1为什么第五行p的步长是一个元素
2.2如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加 展开
&a取数组首地址,步长一数组。
a取数组首行地址,步长一行。
*a取数组首行首元素地址,步长一数组。
1.1这三条是正确的结论吗?
1.2该结论适用于多维和一维数组吗
2.
①int a[2][2]={{2,3},{6,7}};
②int *p=a[0];
③int i,sum=0;
④for(i=0;i<2;i++)
⑤ sum=sum+(*(p+1)+i);
2.1为什么第五行p的步长是一个元素
2.2如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加 展开
6个回答
展开全部
比如
p指向的是数组第一个元素的地址 所以*p就是取p指向的这个地址的值.
B错在str是指向字符串的指针
比如
printf("%s\n",str);会输出整个Program
由此可以说明BCD都是错的
字符串的表现形式
在C程序中,可以用两种方法实现一个字符串。
1. 用字符数组实现。
[例8.11]
void main(void)
{static char string [ ]="I Love China!";
printf("%s\n",string);
}
运行时输出: I Love China!
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4),string+4是指向字符“v”指针。
2. 用字符指针实现。
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。
[例8.12]
void main(void)
{char *string="I Love China!";
printf("%s\n",string);
}
在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。
p指向的是数组第一个元素的地址 所以*p就是取p指向的这个地址的值.
B错在str是指向字符串的指针
比如
printf("%s\n",str);会输出整个Program
由此可以说明BCD都是错的
字符串的表现形式
在C程序中,可以用两种方法实现一个字符串。
1. 用字符数组实现。
[例8.11]
void main(void)
{static char string [ ]="I Love China!";
printf("%s\n",string);
}
运行时输出: I Love China!
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4),string+4是指向字符“v”指针。
2. 用字符指针实现。
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。
[例8.12]
void main(void)
{char *string="I Love China!";
printf("%s\n",string);
}
在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。
追问
感谢,字符串指针我还没看到,不过可以学习
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一问:前两句是对的,使用于多维与一维数组。
第三句是错的,*a,在一维数组中是首元素的值,二维数组中是首行首元素地址,步长一元素。
第二问:为什么第五行p的步长是一个元素?
因为p指向的是int类型,所以步长是一个int类型。
如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加?
建议定义为数组指针 int (*p)[2] = a;
建议楼主看一本书,C语言深度解刨
第三句是错的,*a,在一维数组中是首元素的值,二维数组中是首行首元素地址,步长一元素。
第二问:为什么第五行p的步长是一个元素?
因为p指向的是int类型,所以步长是一个int类型。
如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加?
建议定义为数组指针 int (*p)[2] = a;
建议楼主看一本书,C语言深度解刨
追问
好的谢谢,在看c语言基础备考二级,讲的确实是比较基础不太深入,回去入手一本深度解剖吧,虽然正妻是python_(:з」∠)_
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言是一种高级编程语言,目前的版本是vC糸列。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询