当我以不同方式声明和定义指针 k 时,我使用的是 turbo c,它给出了警告“不可移植指针转换”,并且 *k 的结果显示为垃圾
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,*k;//declaration
int a[3][5] = {
{ 1, 2, 3, 4, 5 },
{6, 7, 8, 9, 10 },
{ 11, 12, 13, 14, 15 }
}; *k = &a ; //defination
clrscr();
printf("%d\n",*k);//garbage value
printf("%d\n",*(k+2));//garbage value
printf("%d\n",*(k+3)+1);//garbage value
printf("%d\n",*(k+5)+1);//garbage value
printf("%d\n",++*k);//garbage value
getch();
}
当在同一行中定义和声明指针 k 时,它会给出结果
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j;
int a[3][5] = {
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 },
{ 11, 12, 13, 14, 15 }
}, *k = &a ;
clrscr();
printf("%d\n",*k); //1
printf("%d\n",*(k+2)); //3
printf("%d\n",*(k+3)+1); //5
printf("%d\n",*(k+5)+1); //7
printf("%d\n",++*k); //2
getch();
}
这个问题来自“letusC”。
您的回复将不胜感激!!