请教一题C,我看不明白! - C/C++ / C语言
#include "stdio.h"
void main()
{
int *p;
int a[10]={0,1,2,3,4,5,6,7,8,9};
int k=0;
p=a;
for(int i=0;i<10;i++,p++)
{
printf("%d\n",*p);/*实际结果输出了0-9的数字*/
k++;
}
printf("%d",*p+k);/*实际结果输出20*/
}
为什么最后输出的是20呢?按照我个人的理解我觉得是*p最后等于9,而k=10,就是19了,可我屏幕上打出来却是20,这是为什么呢?
明显最后p指向了未知地方
C/C++ code:
#include "stdio.h"
void main()
{
int *p;
int a[10]={0,1,2,3,4,5,6,7,8,9};
int k=0;
p=a;
for(int i=0;i <10;i++,p++)
{
printf("%d\n",*p);/*实际结果输出了0-9的数字*/
k++;
}
p = a;
printf("%d",*p+k);/*实际结果输出20*/
}
看错题目了,嘿嘿~~~
你的p在跳出for循环的时候,实际上最后做了一次++操作!所以p指向的是a[10],而不是a[9]
你printf("%d",a[10]);看看就知道为什么了
哎哟
for(int i=0;i <10;i++,p++) i和p都自加了11次 所以你的P的为a[10] 不信自己打印i的值
相关问答:
问一下:
#include <stdio.h>
int main()
{
char x, y, z;
int i;
int a[16];
for(i=0; i<=16; i++)
{
a[i] = 0;
......
#include "stdio.h"
int main()
{
char *ch(char *, char *);
char str1[]="I am glad to meet you!";
char str2[]="Welcom to study C!";
&nb ......
#include"stdio.h"
#include"stdlib.h"
void ContrTwo(char i)
{
char str1[8];
itoa(i,str1,2);
printf("%s",str1);
}
unsigned char leftRot(char str,int i);
unsign ......
我现在要些一个fortran调用C接口的问题,但是不知道 C语言里面分配的指针怎么付给fortran,又不能在fortran立马先分配好,业务上不允许。
我写了个测试的例子。但是不行。
test.c
#include <stdio.h>
#incl ......