#include <stdio.h>
int main()
{
/*
1.指针当成作数组名,下标法访问
2.数组拿来加
*/
int arr[3]={1,2,3};
int *p=arr;
//sizeof的用法
printf("sizeof的用法\n");
printf("sizeof arr is %d\n",sizeof(arr));//结果是12.3*4=12.
printf("sizeof arr is %d\n",sizeof(p));//结果是8;os操作系统用8个字节表示一个地址
printf("sizeof int is %d\n",sizeof(int));
printf("sizeof pointer is %d\n",sizeof(int*));//结果是8;os操作系统用8个字节表示一个地址
printf("sizeof pointer is %d\n",sizeof(char*));//结果是8;os操作系统用8个字节表示一个地址
int i;
//printf("%d ",*(p+0));
printf("把数组名当指针使用1:\n");
for(i=0;i<3;i++){
printf("%d ",*(arr+i));
}
putchar('\n');
printf("\n");
printf("把数组名当指针使用2:\n");
for(i=0;i<3;i++){
printf("%d ",arr[i]);
}
putchar('\n');
printf("\n");
printf("下标法使用指针1:\n");
for(i=0;i<3;i++){
printf("%d ",p[i]);
}
putchar('\n');
printf("\n");
printf("下标法使用指针2:\n");
for(i=0;i<3;i++){
printf("%d ",*(p+i));
}
putchar('\n');
/*
for(i=0;i<3;i++){
printf("%d ",*arr++);//编译不过,指针常量
}
*/
putchar('\n');
return 0;
}
上面代码面试非常重要,下面将对代码进行一步步拆解,希望能对读者们有帮助
老规矩,先把C语言的基本架构先写出来
#include <stdio.h>
int main()
{
//此处是位于整体框架的主代码
}
运行无任何输出内容
#include <stdio.h>
int main()
{
//sizeof的用法
int arr[3]={3,4,5};
int *p=arr;//目的为了承接数组
printf("sizeof is arr %d ",sizeof(arr));//打印出来的数据是12;3*4
printf("sizeof is arr %d ",sizeof(p));//电脑的操作系统是八位
printf("sizeof pointer is %d\n",sizeof(int*));//结果是8;os操作系统用8个字节表示一个地址
printf("sizeof pointer is %d\n",sizeof(char*));//结果是8;os操作系统用8个字节表示一个地址
printf("sizeof is int %d ",sizeof(int));//int的字节为4位
}
运行
D:\Cyuyan\Address>gcc Addresss_demo_2.c
D:\Cyuyan\Address>a.exe
sizeof的用法
sizeof arr is 12
sizeof arr is 8
sizeof int is 4
sizeof pointer is 8
sizeof pointer is 8
1.指针当成作数组名,下标法访问
2.数组拿来加
#include <stdio.h>
int main()
{
/*
1.指针当成作数组名,下标法访问
2.数组拿来加
*/
int arr[3]={1,2,3};
int *p=arr;
int i;
printf("%d\n ",*(p+0));
printf("把数组名当指针使用1:\n");
for(i=0;i<3;i++){
printf("%d ",*(arr+i));
}
putchar('\n');
printf("\n");
printf("把数组名当指针使用2:\n");
for(i=0;i<3;i++){
printf("%d ",arr[i]);
}
putchar('\n');
printf("\n");
printf("下标法使用指针1:\n");
for(i=0;i<3;i++){
printf("%d ",p[i]);
}
putchar('\n');
printf("\n");
printf("下标法使用指针2:\n");
for(i=0;i<3;i++){
printf("%d ",*(p+i));
}
putchar('\n');
/*
for(i=0;i<3;i++){
printf("%d ",*arr++);//编译不过,指针常量
}
*/
putchar('\n');
return 0;
}
运行
D:\Cyuyan\Address>gcc Addresss_demo_2.c
D:\Cyuyan\Address>a.exe
把数组名当指针使用1:
1 2 3
把数组名当指针使用2:
1 2 3
下标法使用指针1:
1 2 3
下标法使用指针2:
1 2 3