指针常量,数组打印

//把数组打印出来
# include <stdio.h>
void printfshuzu(char *p, int n);
int main()
{
char a[5] = {'h','e','l','l','o'};//a是一个指针常量。
    printfshuzu(a,5);
// printf("%d", &a[0]);
return 0;
}


void printfshuzu(char *p, int n)//实参和形参的数据类型要是一样的,
{
    char *i;
for(i = p; i < p+n; i++)
{
printf("a[%d] = %c\n", (i-p), *i);
}
}
把数组打印出来
# include <stdio.h>
void printfshuzu(char *p, int n);
int main()
{
char a[5] = {'h','e','l','l','o'};
    printfshuzu(a,5);
// printf("%d", &a[0]);
return 0;
}


void printfshuzu(char *p, int n)
{
    char *i;
for(i = p; i < p+n; i++)
{
printf("a[%d] = %c\n", (i-p), *i);//对于这个部分的处理假如要是变成别的类型的变量呢?这里是因为char类型的变量只占有一个字节

}
//实参和形参的数据类型要是一样的,上面的传递的都是指针常量,数组名就是指针常量,也是地址,数组名就是地址


//下面将char 类型的变量转换成整型变量来试一下
# include <stdio.h>
void printfshuzu(int *, int);
int main()
{
int a[5] = {1, 2, 3, 4, 5};
printfshuzu(a,5);
return 0;
}


void printfshuzu(int *p, int n)
{
int *i;//i是指针,指针加1,字节数可以加好几个
for(i = p; i < p+n; i++)
{
printf("a[%d] = %d\n", (i-p), *i);//这里对p的理解很重要,p是一个指针,p+1是可以移动很多个字节的
(内存是可以看成是一个数组,(逻辑上是连续的,实际上是可以不连续的), 指针就相当于这个数组的下标)
}
}

//事实证明:这里与类型是没有关系的

使用另一种方法打印数组里面的内容



# include <stdio.h>
void printfdhuzu(char p[], int n);
int main()
{
char a[5] = {'h','e','l','l','o'};
printfshuzu(a,5);//a也是一个指针常量
return 0;
}


void printfshuzu(char p[], int n)//这里是一个指针常量啊
{
char *i;
for(i =p; i < p+n; i++ )
{
printf("a[%d] = %d\n", (i-p), *i);
}

/*

  void printfshuzu(char p[], int n)

{

  int i;

 for(i = 0; i  < i+n; i++)

{

printf("a[%d] = %d\n", i,p[i]);
}
}

*/

}

//通过上面的例子我们要知道的是:

函数的传递的参数的类型要是一样的,所以最后一个例子还是能够成立的

数组名是一个地址,而这个地址不会变,那么就是一个地址常量,指针就是地址,地址就是指针,那么数组名也就是地址常量,所以又有数组名与指针密不可分。

上面我们用到了变量++,指针++


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值