C语言指针和文件

一、指针
首先说指针,指针在C语言中是非常重要的,也是很多小白学习C语言的一个难点,因此,需要深刻理解。
下面,小编简单罗列几个程序,希望能够动手实验。
1.

include<stdio.h>

void main()

{
int *p; //*p是一个指针,定义的有地址但是是未知的
int a=3;
p=a; //把a的地址p,这是不对的,因为p是未知的,虽然有地址,但不确定,因此不能直接和a划等号
printf("%d\n",*p);
}

include<stdio.h>

void main()

{
int *p,q; // 定义两个指针p,q
int a=3; // 定义一个变量a
p=&a; // 将a的地址给p
q=p; // 将p的地址给q # 假设用
q=*p,就不对了,因为q地址是不确定的,不能直接使用
printf("%d\n",*q); // 最后输出q所指向的值
}

3.实现两个数值的交换,如果a>b,就交换着两个数值,并输出依次输出

include<stdio.h>

void main()

{
int a,b;
printf(“请输入两个数值!: “);
scanf(”%d%d”,&a,&b);
int t=0;
if (a>b)
{
t=a;
a=b;
b=t;
}
printf("%d,%d\n",a,b);

}

4.调用子函数来交换发现,并没有交换输出

include<stdio.h>

void add(int a,int b)
{
int t=0;
if (a>b)
{
t=a;
a=b;
b=t;
}
// printf("%d,%d\n",a,b);
}
void main()
{
int a,b;
printf(“请输入两个数值!: “);
scanf(”%d%d”,&a,&b);
add(a,b);
printf("%d,%d\n",a,b);

}

//可以看出,并没有交换数据,而是正常输出,这是因为交换的只是在小单元中,而在主程序中并没有
二、指针和数组结合
5.采用指针取地址交换,发现是可以进行交换输出的

include<stdio.h>

void add(int *a,int *b)
{
int t=0;
if (a>b)
{
t=*a;
*a=*b; // 而当进行取地址的时候在,再次调用发现是可以进行交换的
*b=t;
}
// printf("%d,%d\n",a,b);
}
void main()
{
int a,b;
printf(“请输入两个数值!: “);
scanf(”%d%d”,&a,&b);
add(&a,&b);
printf("%d,%d\n",a,b);

}

//可以看出,并没有交换数据,而是正常输出,这是因为交换的只是在小单元中,而在主程序中并没有

6.用数组的形式采用冒泡发进行数值大小的排序,并输出在屏幕上。
#include<stdio.h>
#define SIZE 10
void main()
{
int a[SIZE]={1 ,2,36,5,6,7,9,56,34,23};
int pass;
int i;
int hold;
printf(“Data item\n”);

for(i=0;i<SIZE;i++)
{
	printf("%4d",a[i]);
}

for(pass=1;pass<SIZE;pass++)
{
	for(i=0;i<SIZE-1;i++)
{
		if(a[i]>a[i+1])
		{	hold=a[i];
		a[i]=a[i+1];
		a[i+1]=hold;
		}

}
}
	printf("\n");
printf("jieguo\n");
for(i=0;i<SIZE;i++)
{
	printf("%4d",a[i]);
}
printf("\n");

}

三、文件打开与关闭(笔者也是刚弄懂,后面待续)
7.在C语言中打开一个文件,以只读的形式,如果打开了,就返回success,否则就返回打开fail。最后注意要对打开的文件进行关闭。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main()
{
FILE *fp;
char *filepath= “C:/Users/Administrator/Desktop/test1.txt”;//绝对路径,从根目录开始进行 otherwith 可以是用相对路径

进行打开,不过使用相对路径的时候要注意能够将需要打开的文件放入到程序相应的路径下,否则路径无效
fp=fopen(filepath,“r”);
if(fp==NULL) //判断是否打开成功,如果不成功,则返回,并将系统进行关闭。
{
printf(“open fail!\n”);
system(“Pause”);
// return 1;
}
else
{
printf(“opensuccess!\n”);
}
fclose(fp);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值