- 课堂交流区
- 帖子详情
404
回复
-
<p>①如果对const指针的所有的操作都可以对数组变量做,而且结果一致,就说明数组变量就是指针;如果有某个操作不能做,或者结果不一致,就说明不是指针。</p><p>②当数组变量作为参数时,它不是严格意义上的指针,更不是常量指针,但是他可以被看做指针,而且常量指针的操作都可以作用于数组变量;当数组变量不是参数时,即它在主函数中,它有两层含义 ,在用在sizeof上时,它似乎被看做了一个数组整体,但是其他情况下,都可以被当做常量指针。 </p>添加评论
-
<p><span style="" rgb="" -webkit-text-size-adjust="" auto="" background-color="" rgba="" >如果对const指针的所有的操作都可以对数组变量做,而且结果一致,就说明数组变量就是指针;如果有某个操作不能做,或者结果不一致,就说明不是指针。</span> </p> <p><span style="" rgb="" -webkit-text-size-adjust="" auto="" background-color="" rgba="" >当数组变量作为参数时,它不是严格意义上的指针,更不是常量指针,但是他可以被看做指针,而且常量指针的操作都可以作用于数组变量;当数组变量不是参数时,即它在主函数中,它有两层含义 ,在用在sizeof上时,它似乎被看做了一个数组整体,但是其他情况下,都可以被当做常量指针。 </span> </p>添加评论
-
如果对const指针的所有的操作都可以对数组变量做,而且结果一致,就说明数组变量就是指针;如果有某个操作不能做,或者结果不一致,就说明不是指针。当数组变量作为参数时,它不是严格意义上的指针,更不是常量指针,但是他可以被看做指针,而且常量指针的操作都可以作用于数组变量;当数组变量不是参数时,即它在主函数中,它有两层含义 ,在用在sizeof上时,它似乎被看做了一个数组整体,但是其他情况下,都可以被当做常量指针。添加评论
-
<p>由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。</p><p>当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。 </p><p><br ></p><p>#include<stdio.h></p><p>int main()</p><p>{</p><p> int a[]={0,1,2,3,4,5,6,7,8,9,10};</p><p> int *const p=&a[0];</p><p> </p><p> printf("sizeof(a)=%d,sizeof(p)=%d\n",sizeof(a),sizeof(p));</p><p> printf("main:p=%p\n",p);</p><p> printf("main:a=%p\n",a);</p><p> a[13]=10;</p><p> printf("main:a[13]=%d\n",a[13]);</p><p> p[13]=10;</p><p> printf("main:p[13]=%d\n",p[13]);</p><p> sum(a,11);</p><p> } </p><p> </p><p> int sum(int a[],int len)</p><p> {</p><p> int sum=0;</p><p> int i=0;</p><p> int *const p=&a[0];</p><p> <strong> //[Error] 'a' redeclared as different kind of symbol int *const a=&a[0];</strong></p><p><strong> //[Error] redefinition of 'p' int *const p=&a[0];</strong></p><p><strong>此处两个错误的类型不同,说明从严格意义上而言,数组参数实际上并不是常量指针的类型</strong></p><p> printf("p=%p\n",p);</p><p> printf("a=%p\n",a);</p><p> p[1]=10;</p><p> printf("p[1]=%d\n",p[1]);</p><p> a[1]=10;</p><p> printf("a[1]=%d\n",a[1]);</p><p> a[13]=10;</p><p> printf("a[13]=%d\n",a[13]);</p><p> p[13]=10;</p><p> printf("p[13]=%d\n",p[13]);</p><p> </p><p> for(i=0;i<len;i++){</p><p> sum+=a[i];</p><p> }</p><p> printf("sizeof(a)=%d\n",sizeof(a));</p><p> </p><p> return sum;</p><p> }</p><p> 运行结果:</p><p>sizeof(a)=44,sizeof(p)=8</p><p>main:p=000000000062FDE0</p><p>main:a=000000000062FDE0</p><p>main:a[13]=10</p><p>main:p[13]=10</p><p>p=000000000062FDE0</p><p>a=000000000062FDE0</p><p>p[1]=10</p><p>a[1]=10</p><p>a[13]=10</p><p>p[13]=10</p><p>sizeof(a)=8</p><p><br ></p>添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。#includeint main(){int a[]={0,1,2,3,4,5,6,7,8,9,10};int *const p=添加评论
-
<p>从严格意义上而言,数组参数实际上并不是常量指针的类型</p>添加评论
-
<p>如果对const指针的所有的操作都可以对数组变量做,而且结果一致,就说明数组变量就是指针;如果有某个操作不能做,或者结果不一致,就说明不是指针。</p><p>当数组变量作为参数时,它不是严格意义上的指针,更不是常量指针,但是他可以被看做指针,而且常量指针的操作都可以作用于数组变量;当数组变量不是参数时,即它在主函数中,它有两层含义 ,在用在sizeof上时,它似乎被看做了一个数组整体,但是其他情况下,都可以被当做常量指针。 </p><p><br ></p>添加评论
-
<p>如果对const指针的所有的操作都可以对数组变量做,而且结果一致,就说明数组变量就是指针;如果有某个操作不能做,或者结果不一致,就说明不是指针。</p><p>当数组变量作为参数时,它不是严格意义上的指针,更不是常量指针,但是他可以被看做指针,而且常量指针的操作都可以作用于数组变量;当数组变量不是参数时,即它在主函数中,它有两层含义 ,在用在sizeof上时,它似乎被看做了一个数组整体,但是其他情况下,都可以被当做常量指针。 </p><p><br ></p><p><br ></p>添加评论
-
<p>由具体操作可知,当数组变量作为参数时,常量指针的操作可以作用于数组变量,但是严格意义上并不是常量指针,也不是严格意义上的指针。</p><p>当数组变量在主函数中,在sizeof被看做了一个数组整体,其他情况下,常量指针的操作都可以作用于数组变量。 </p><p><br ></p><p>#include<stdio.h></p><p>int main()</p><p>{</p><p> int a[]={0,1,2,3,4,5,6,7,8,9,10};</p><p> int *const p=&a[0];</p><p> </p><p> printf("sizeof(a)=%d,sizeof(p)=%d\n",sizeof(a),sizeof(p));</p><p> printf("main:p=%p\n",p);</p><p> printf("main:a=%p\n",a);</p><p> a[13]=10;</p><p> printf("main:a[13]=%d\n",a[13]);</p><p> p[13]=10;</p><p> printf("main:p[13]=%d\n",p[13]);</p><p> sum(a,11);</p><p> } </p><p> </p><p> int sum(int a[],int len)</p><p> {</p><p> int sum=0;</p><p> int i=0;</p><p> int *const p=&a[0];</p><p> //[Error] 'a' redeclared as different kind of symbol int *const a=&a[0];</p><p> //[Error] redefinition of 'p' int *const p=&a[0];</p><p>此处两个错误的类型不同,说明从严格意义上而言,数组参数实际上并不是常量指针的类型</p><p> printf("p=%p\n",p);</p><p> printf("a=%p\n",a);</p><p> p[1]=10;</p><p> printf("p[1]=%d\n",p[1]);</p><p> a[1]=10;</p><p> printf("a[1]=%d\n",a[1]);</p><p> a[13]=10;</p><p> printf("a[13]=%d\n",a[13]);</p><p> p[13]=10;</p><p> printf("p[13]=%d\n",p[13]);</p><p> </p><p> for(i=0;i<len;i++){</p><p> sum+=a[i];</p><p> }</p><p> printf("sizeof(a)=%d\n",sizeof(a));</p><p> </p><p> return sum;</p><p> }</p><p> 运行结果:</p><p>sizeof(a)=44,sizeof(p)=8</p><p>main:p=000000000062FDE0</p><p>main:a=000000000062FDE0</p><p>main:a[13]=10</p><p>main:p[13]=10</p><p>p=000000000062FDE0</p><p>a=000000000062FDE0</p><p>p[1]=10</p><p>a[1]=10</p><p>a[13]=10</p><p>p[13]=10</p><p>sizeof(a)=8</p><p><br ></p>添加评论
点击加载更多
到底啦~