C基础整理语言

笔记整理:
day10
printf("%ld",sizeof(int*)); 8
void* q=p;可以接受任意类型的指针 (int)q 取值需要强制转换 (目标类型)
int arr[3][3]= {1,2,3,4,5,6,7,8,10};
printf("%d\n",
(arr+8)); //arr 是一个二级指针取出arr行指针 +8 指针偏移
<C语言深度剖析>,<c和指针>系类,<c语言陷阱和缺陷>
int(
p[5])(int,int)={add}; //函数指针,其本质是一个指针变量 函数指针数组
int fun(int,int); //指针函数
void
代表通用指针,他可以指向任何类型的指针,但是需要注意:void类型的指针,不能取值,因为系统不知道当前的void到底指向什么类型的指针,所以无法分配具体的缓存去计算数据
arr1/arr2称为指针数组:本质是一个数组,其存放的元素都是指针的数组。
fread(void* buffer,size_t size,size_t count,FILE* stream)
fread 成功返回数量 失败失败0;
fprintf(wfp,"%d %s\n",DB[i].id,DB[i].name);
if(fscanf(rfp,"%d %s\n",&DB[i].id,DB[i].name)!=2){break;}
fscanf的返回值为:成功读取则返回读取到的元素的数量,这里为2个,失败则返回的值肯定不是2个,甚至是0
fwrite(DB+i,sizeof(stu_t),1,wfp);
fgets成功读取,会将读取到的内容存放如buf内,并将buf返回,失败读取则返回NULL指针

void* memcpy(void* dest,const void *src,size_t n);

return 语句是提前结束函数的唯一办法。return 局部变量的地址非法

sizeof 是操作符(变量 类型)所占内存大小  strlen是函数(字符串)/以0x00为字符串结束 

1  函数指针具体应用:  1 回调函数 隐藏函数本体    2 实现不同对象之间的信号通讯 (函数指针数组,将所有同类型的哈尼素直接保存到一个数组中 )
2 段错误:  1 访问了控指针  2 野指针(没有明确的指向)3 访问了常量
指针常量:本质是一个常量,内容可变;	
"\033[字体背景颜色;字体颜色m字符串\033[0m"
结构体:  能存不同的数据类类型 任意类型  能存放函数指针
atoi(consrt char*)  将字符串中的数字过滤出来
fputs(fgets)的用法: fgets(char* buf,int size, FILE* fp);  成功返回buf,失败返回NULL
a^=b;b^=a;a^=b;  a=a^b;
密码隐藏函数:
char getch(void)

{

int ch;
struct termios oldt, newt;
//printf("please input you password:");

    
        tcgetattr(STDIN_FILENO, &oldt);
        newt = oldt;
        newt.c_lflag &= ~(ECHO | ICANON);
        tcsetattr(STDIN_FILENO, TCSANOW, &newt);
        ch = getchar();
        printf("*");
        tcsetattr(STDIN_FILENO, TCSANOW, &oldt);   
return ch;

}

105实战(1)
#include<stdio.h>
#include<stdlib.h>
#defien BUF 10224

int main()
{
	int a,b;
	int sum;
	char buffer[BUF];
printf("***********************************\n");
printf("*  Welcome to use our counter     *\n");
printf("*  Input two integers in one line *\n");
printf("*  The sum will be printed        *\n");
printf("*  Input the char '#' to quit     *\n");
printf("*   复制过来的                      *\n");
printf("***********************************\n");
while(fgets(buffer,BUF,stdin)!=NULL&&buffer[0]!='#')
{
	if(sscanf(buffer,"%d %d",&a,&b)!=2)
	{
		printf("the input is skipped:%s",buffer);
		continue;
	}
	
	sum=a+b;
	printf("the sum of %d and %d is %d\n",a,b,sum);
}
	return 0;
}

%hd  表示短整形 -32767-32767
%d   整形  -2147483648 ~ +2147483647

j=i++;先赋值后加加

j=-i++;  //j=(-i)++;

float scanf("%f");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值