C-pointer—array

#include <iostream>
#include <stdio.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */






//2数组指针


//多维指针调用 


//2.2数组名作为函数参数


void show_array1(int *p){//传递的是数组首元素的地址,是指针,所以只有4个字节。 
printf("size1 = %d\n",sizeof(p));//size1=4;
for (int i = 0; i<10; i++){
printf("%d ",p[i]);//*(ar+i)
}printf("\n");

}


void show_array2(int br[]){//传递的是数组首元素的地址,是指针,所以只有4个字节。 
printf("size1 = %d\n",sizeof(br));//size1=4;
for (int i = 0; i<10; i++){
printf("%d ",br[i]);
}printf("\n");

}


int main(){
int ar[10]={1,2,3,4,5,6,7,8,9,10};
printf("size = %d\n",sizeof(ar));//40 
show_array1(ar);
show_array2(ar);

return 0;

 
/*
//2.1
int main(){
int ar[10]={1,2,3,4,5,6,7,8,9,10};
//正常输出数字 
for (int i = 0; i<10; i++){
printf("%d ",ar[i]);
}printf("\n");
//利用数组指针 
for (int i = 0; i<10; i++){
printf("%d ",*(ar+i));//ar表示整个数组,内部存储的正好是数组0位置的地址 
}printf("\n");

//利用指针访问数组
int *p = ar;
for (int i = 0; i<10; i++ ){
printf("%d ",*(p+i));
}printf("\n");

//循环指针存储地址,访问指针所指内容 
for (; p<&ar[10]; p++ ){
printf("%d ",*p);
}printf("\n");
return 0;



/*
//1 交换ab值,用指针 


//无中间变量的实参交换
void Swap_pointer2(int *x,int *y) {
*x = *x + *y;
*y = *x - *y;
*x = *x - *y; 

}




//传址  :让指针指向外部的实参,那么函数内部的操作就是对实参的操作,实现实参交换 
void Swap_pointer(int *p, int * s){
int temp;
temp = *p;//*p指向a的内容*s指向b得的内容 。即,指向外部的实参。 
*p = *s;
*s = temp;
}


//指针的交换: 
void Swap_pointer(int *p, int * s){
int *temp = p; //指针本身内容的交换,并没有改变指针所指的内容,而且这种交换即为形参的交换,对实参没有任何影响。 
p = s;
s = temp;

//传值 
void Swap(int a ,int b){


int temp = a;
a = b;
b = temp;
}
int main(int argc, char *argv[]) {
int a = 10;
int b = 20;

printf("Before Swap: a = %d and b = %d\n",a, b);

Swap(a ,b);
printf("After Swap: a = %d and b = %d\n",a, b);
//程序结果并没有交换ab. 因为交换的是形参,当跳出函数时,形参的内存被释放,交换的操作就失效了。 

//所以要用指针作为函数的参数, 将函数内部的变换体现到函数外面 
//要使形参的改变影响实参,用指针。 
Swap_pointer(&a, &b);
printf("After Swap: a1 = %d and b1 = %d\n",a, b);

return 0;
}*/ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值