我正在学习 c,我发现第 18 行中的表达式 (int*)arr
很困难。整个程序是
int main () {
char c, arr['z'-'a'], *pChar;
int i, *pInt, int matr = 74 ;
for ( c='a'; c<'z'; c++) {
arr[c-'a'] = c;
printf("%c ", arr[c-'a']);
}
printf("\n");
pChar = arr + matr%15;
for (i=0; i< 5; i++) {
printf("%c ", *pChar);
pChar++;
}
printf("\n");
pInt = (int *)arr + matr%2;
for (i=0; i<5; i++) {
pChar = (char *)pInt;
printf("%c ", *pChar);
pInt++;
}
return 0;
}
谢谢
最佳答案
您将 arr
声明为 char
类型。 数组的名称可以用作指向其第一个元素的指针; arr
是指向数组 arr
的第一个 char
的指针,类型为 char *
。
pInt
的类型为 int *
,用于表达式
pInt = (int *)arr + matr%2;
需要进行强制转换才能将程序中的 arr
类型转换为 int *
类型。
关于c - 狡猾的指针表达式 (int*)arr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032263/