指针和数组名的见怪不怪&sizeof的用法

#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
把数组名当指针使用11 2 3

把数组名当指针使用21 2 3

下标法使用指针11 2 3

下标法使用指针21 2 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值