想问一下以下程序中printf输出的都是什么数字,与数组中的数字和位置有什么关系
#include
int main(int argc, const char * argv[]) {
int a[5] = {3,4,8,9,10};
double *p = (double *)&a;
printf("%d\n",(double *)p);
int *q = p;
printf("%d\n",*q);
//
int b[7] = {3,4,8,9,10,11,12};
double *x = (double *)&b;
printf("%d\n", *x);
int *y = x;
printf("%d\n",*y);
//
int d[6] = {3,4,8,9,10,11};
double *j = (double *)&d;
printf("%d\n",*j);
int *k = j;
printf("%d\n",*k);
//
int c[5] = {3,4,8,9,10};
double *n = (double *)&c;
printf("%d\n",*n);
int *m = n;
printf("%d\n",*m);
return 0;
}
比如 double *p = (double *)&a; p指向了一个int数组,那么编译器知道p的类型是int型,那么p+1就会移动sizeof(int)长度,指向了下一个元素
近段复习C语言,感觉C语言相对于C++、Java等高级语言最大的特点就是:简洁紧凑、灵活方便。C语言特征不多,带有面向硬件思维,小巧而精炼。C语言非常贴近底层,要真正理解指针的本质,还需要些微机原理、计算机组成与原理、操作系统和编译原理等背景知识。......
答案就在这里:C 语言指针与地址
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
最简单的方法就是把代码运行一遍,作为一个程序员,没有人会指望你用笔去写编成,程序员从来不用笔,无论是写代码还是文档!
如果他想让人脑能跟电脑一样,那还要电脑干嘛
最鄙视这种面试题了,在工作中几秒中就能知道的结果他却让你用最原始的方式解决,甚至都不会遇到这种问题
都是答非所问
1.第一个printf输出的是数组a的地址,也就是数组的第一个位置即3的地址
2.第二个printf输出的是3,即数组的第一个位置
3.第三个printf输出的是3,即数组的第一个位置
4.第四个prntf输出的是3,数组的第一个数