【c程序】数组与指针

/******************************************************/
/**************---About   Pointer--------**************/
/**************---Author: Tibruce Zhao---**************/
/**************---Date:   2015/8/30------**************/
/******************************************************/ 
//'*'的作用:通过地址访问变量。
//#include<iostream>
#include<stdio.h>
int main()
{
	char x[9]={'a','b','c','d','e','f','g','h'};
	puts(x);
	char *p1;
	p1=&x[0];
	char *p2=&x[2];
	printf("%c\n",*p1);
	*p1='A';
	*p2='C';
	puts(x);
	char *p3=&x[3];    //指针类型为char型
	printf("%d\n",*p3);//'a'为97,x[0]。
	printf("******************第二期*************************");
	int a[5]={11,22,33,44,55};
	int *p;//野指针,程序中避免野指针,考虑用空指针
	printf("p=%p\n",p);
	int *q=NULL;
	printf("q=%p,q=%d\n",q,q);
	#define T int*
	union {
		T x;
		char b[sizeof(T)];
	}u;
	u.x=q;
	int i;
	for(i=0;i<sizeof(T);i++)
		printf("%d ",u.b[i]);
	printf("\n");
	//*p=100;可能导致非法内存访问
	p=a;//数组当做数据用时表示第一个元素的地址
	for(i=0;i<5;i++) printf("%d ",a[i]);    printf("\n");
	for(i=0;i<5;i++) printf("%d ",*(a+i));  printf("\n");
	for(i=0;i<5;i++) printf("%d ",p[i]);    printf("\n");
	for(i=0;i<5;i++) printf("%d ",*(p+i));  printf("\n");
	printf("%d \n",(p+2)[1]);//*(p+2+1)==>p[3]
	q=p+3;
	printf("%d \n",1[q]);//p[4]
	printf("p=%p,q=%p,q-p=%d\n",p,q,q-p);
	for(i=0;i<5;i++) printf("%d ",*p+i);    printf("\n");//*p为11
	for(i=0;i<5;i++) printf("%d ",*p++);    printf("\n");//++的优先级比*的高(++会改变p的值)
	for(i=-5;i<0;i++) printf("%d ",p[i]);   printf("\n");//输出为11 22 33 44 55
	for(i=0;i<5;i++)  printf("%d ",*--p);   printf("\n");
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值