20250223C语言指针与应用
01指针位数.cpp
#include<stdio.h> int main()
{char a =0x22;
// char *p;char *p=&a; //指针变量就是存放地址,为了可以存下计算机内存中任何地址,16位系统指针变量大小为2字节,32-4字节(4x8=32bit),64位系统为8字节
// printf("%d\n",sizeof(a));
// printf("%d\n",sizeof(p));printf("%x\n",a);printf("%x\n",p); printf("%x\n",*p);//*表示取内容 p++;//指向下一个char数据类型,要防止指针越界,以避免出现程序崩溃或不可预知错误 printf("%x\n",p); return 0;
}
02指针与数组.c
#include<stdio.h>
#include<stdlib.h>
int main()
{
// char a[]={10,20,30};
// char *p=a;int *a =malloc(3*sizeof(int));*a = 1;*(a+1)=2; *(a+2)=3;printf("%d\n",sizeof(a)/sizeof(a[0]));printf("a[0]=%d\n",a[0]);printf("a[1]=%d\n",a[1]);printf("a[2]=%d\n",a[2]);printf("a[0]=%d\n",*a);printf("a[1]=%d\n",*(a+1));printf("a[2]=%d\n",*(a+2));return 0;}
03值传递与参传递.c
#include<stdio.h> void Print( int part)//值传递,将传入的值copy一份给part,涉及值的复制和占用内存
{part = 20;printf("part = %d\n",part);
}int FindMax(const int *arr,int len)//const 防止传入数据被修改
{int Max = arr[0];int i;for(i=1;i<len;i++){if(Max < arr[i]){Max = arr[i];}}return Max;
}void FindMaxAndCount(int *Max,int *count,const int *arr,int len )
{
// *Max = arr[0];int i;for(i=0;i<len;i++){if(*Max < arr[i]){*Max = arr[i];(*count) = 1;}else if(*Max == arr[i]){(*count)++;}}
}
/****************/int Timer[] = {1,2,4};int *Get_Timer()
{
// int Timer[] = {1,2,4};//禁止返回局部变量,因为局部变量随着函数运行结束而销毁 return Timer;
}
/****************/int main()
{
// //1 值传递
// static int x = 10;
// Print(x);
// printf("x = %d\n",x);
//
// //2 参数传递
// int a[] = {1,2,13,4,5,6};
// int Max = FindMax(a,6);
//
// printf("Max = %d\n",Max);//3 通过指针实现多返回值
// int a[] = {13,2,13,4,5,16};
// int max = a[0],Count=0;
// FindMaxAndCount(&max,&Count,a,6);
// printf("Max = %d\n Count = %d\n",max,Count);// //4 返回句柄
// int *pt ;
// pt = Get_Timer();
// printf("pt[0] = %d\n",pt[0]);
// printf("pt[1] = %d\n",pt[1]);
// printf("pt[2] = %d\n",pt[2]);//5 文件读写 FILE *f =fopen("E:\\test.txt","r");
// fputc('A',f);
// fputs("HelloWorld!",f);char a[10];char b;fgets(a,10,f);fclose(f) ;
// printf("%c\n",a);printf(a);return 0;
}