C语言笔记

for语句

for()语句缺省含义
第一个表达式缺省代表进入循环体之前无任何操作
第二个表达式缺省代表进入循环体无任何条件限制
第三个表达式缺省代表循环体结束之后无任何操作

typedef 用法

  1. 用typedef为现有类型创建别名,定义易于记忆的类型名
    eg: typedef int(现有类型) size(便于记忆类型)
    (#define identifier value 相反eg:#define MAX_MODULESIZE 25)
  2. typedef还可以用来掩饰复合类型,如指针和数组
    eg: 你不用像下面这样重复定义有128个字符元素的数组
    char line[128];
    只需要这样定义,Line 类型即代表了具有128个元素的字符数组,使用方法如下:
    typedef char Line[128];
    使用:
    Line line;
    同样也可以像下面隐藏指针用法:
    定义:typedef char * pstr;
    const pstr p1; // 定义一个常量指针

3.typedef int (*FUNCTION_PARA)(int a,int b);

typedef struct PARA {
    FUNCTION_PARA       func_para;
} para_t;

FUNCTION_PARA 就是函数指针类型了,记住就行了

2:接下来要说的是#define 中的 #和##的作用
采用的编译器依旧是clion,
代码如下:

#include <stdio.h>

#define STR(x) #x
#define CON(x,y)   (x##y)
#define call(x,y) x##y
int main()
{

    printf("=====%s\n",STR(love));
    printf("=====%d\n",  CON(1111,222222));
    int x=2,y=5;
//    int xy=90;
    char xy[] = "hello world";
//    printf("-----%d\n",call(x,y));//结果为90
    printf("-----%s\n",call(x,y));//结果为hello world 
    return 0;
}

其中的#是把参数字符串化。即传进去的是love 出来的是“love”,如果传进去的是是“love”,则传出来的是““love"”
然后是##是把x和y搞成一个整体,然后在看这个整体是什么,输出的结果就是什么了

编程好习惯总结

int main()
{
	const int  LENGTH = 10;
	const int  WIDTH  = 5;
	int area; 
	area = LENGTH * WIDTH;
	printf("%d\n",area);
	return 0;
}

请注意,把常量定义为大写字母形式,是一个很好的编程实践。

C / C++ 引用

注意:引用只有在C++中存在。
引用变量其实就是起个别名
不存在空引用。引用必须连接到一块合法的内存。
引用必须在创建时被初始化。指针可以在任何时间被初始化。
int i = 17;
int& r = i;

int x = 90,y = 80;
swap(x, y);
(相当于int &a = x,int &b = y)
void swap(int &a, int &b){
int c = 0;
c = a;
a = b;
b = c;
}
在这里插入图片描述
在这里插入图片描述

随机数生成理解

time_t time(time_t *t);
如果t是空指针,直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。

#include<stdlib.h>
#include<stdio.h>
#include<time.h>/*用到了time函数,所以要有这个头文件*/
#define MAX 10
int main(void)
{
	int number[MAX] = {0};
	int i;
	srand((unsigned)time(NULL));/*播种子*/
	for(i = 0; i < MAX; i++)
	{
		number[i] = (rand() % 100);/*产生100以内的随机整数*/
		printf("%d\n",number[i]);
	}
	printf("\n");
	return 0;
}

1、是拿当前系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。
  计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,是会生成同样的随机序列的。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。
2、使用时,参数可以是unsigned型的任意数据,比如srand(10);
3、如果不使用srand,用rand()产生的随机数,在多次运行,结果是一样的。

string类说明使用

在这里插入图片描述
在这里插入图片描述

sprintf字符串连接说明

sprintf具有字符串连接功能,返回值写入的字符总数,不包括字符串追加在字符串末尾的空字符

	eg:
	unsigned char buff_index = 0;
	unsigned char stream_buff[10 * 1024]
	buff_index += sprintf(stream_buff + buff_index, "gao %s", "hello world");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值