为学IOS,进击中...之C语言指针练习
使用用指針,給你數組 int a[] = {4,34,32,13,15,66};(a + 1),輸出*a + 1,*(ptr1 - 1),*ptr2);并給出求解過程.
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a[] = {4,34,32,13,15,66};
int *ptr1 = (int *)(&a + 1);?
/*
? ?(&a+1)代表儲存數組a[]內存地址的后面一塊內存的地址,*(&a+1)代表對a[]數組后面的那個地址取值,ptr1代表此值的地址.
后面輸出的 (ptr1 - 1) 是又回到了數組a[]本身的內存地址內,而且是內部最后一個小的內存地址,*(ptr1 - 1)是取出這個值 ??
*/
int *ptr2 = (int *)&a + 1;
printf("%d %d %d %d\n",*(a + 1),*a + 1,*(ptr1 - 1),*ptr2);
/* ??
(a+1)是在數組a[]內部 存儲a[0]的地址到緊挨著的a[1]的地址,依然在a[]這個大的空間內,相當數組的下標從0+1. ?*(a+1)是取出對應地址內的數值
*a + 1是先取出地址a內存儲的值,然后這個值+1,
*/
return 0;
/* 此函數輸出的結果:
imacdeiMac-18:desktop imac$ cc zhizhenzuoye.c
imacdeiMac-18:desktop imac$ ./a.out
34 5 66 34
*/
}
轉載于:https://blog.51cto.com/10577665/1679461
總結
以上是生活随笔為你收集整理的为学IOS,进击中...之C语言指针练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 笔记--系统启动流程
- 下一篇: android邮件发送几种方式