day1 手癌菜鸟相应源码 01

test1

//常量存储在 全局静态区(全局变量 静态变量 常量)

//局部变量   函数的栈
//动态空间   堆中
int a;
int main()
{
int b;
char *p = "hello world";


printf("%p\n", "a");
printf("&a=%p &b=%p\n", &a, &b);
printf("%p\n", p);


p[0]='H';
puts(p);
return 0;
}
/*
 0x8048544
 &a=0x80496fc &b=0xbff9aaa8//a是全局变量存储在全局静态去,b是局部变量,存储在栈中,所以地址相差很远!
 0x8048534
 段错误 (core dumped) //p[0] 是常量,不可以改变

* */


test2

  1 #include <stdio.h>
  2 #include <stdint.h>//
  3 
  4 
  5 int main()
  6 {   
  7     int a;
  8 
  9 //  if ( 0 = a ) {//test2.c:8: 错误:赋值运算的左操作数必须是左值
 10 
 11     
 12     printf("%d %d %d %d\n", sizeof(int8_t), sizeof(int16_t),
 13             sizeof(int32_t), sizeof(int64_t));                                    //1 2 4 8
 14     
 15     return 0;/////man
 16 }
~      //有问题不会 建议自己man一下 man的详细用法在分享转载分类中对应的文章

stdint.h

一,是什么
stdint.h是c99中引进的一个标准C库的头文件.
二、干什么
stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)
intN_t, int_leastN_t, int_fastN_t表示长度为N位的整型数;
uintN_t, uint_leastN_t, uint_fastN_t表示长度为N位的无符号整型数 ;
stdint.h中的常量,定义以上各类型数的最大最小值(其中N可以为8,16,32,64)
INTN_MIN, UINTN_MIN, INTN_MAX, UINTN_MAX ;
INT_LEASEN_MIN, INT_LEASEN_MAX ;
INT_FASTN_MIN, INT_FASTN_MAX ;
以上类型的C++类型定义等
三、大数输出
int64_t数的输出:%lld ;
uint64_t数的输出:%llu ;
uint64_t数十六 进制输出:%llx ;
uint64_t数八 进制输出:%llo ;



test3

 #include <stdio.h>
  2 #include <sys/types.h>
  3 #include <unistd.h>
  4 #include <sys/wait.h>
  5 
  6 int main()
  7 {
  8     pid_t pid;
  9     printf("%d %d\n", getpid(), getppid());
 10     
 11     pid = fork();
 12     if ( pid == 0 ) {
 13         //child process
 14         printf("<pid==0> %d %d\n", getpid(), getppid());
 15         return 257;
 16     }   
 17     else {
 18         int status;
 19         //parent process
 20         printf("<pid!=0> %d %d\n", getpid(), getppid());
 21         wait(&status);
 22         //printf("%d\n", (status>>8)&255);
 23         printf("%d\n", WEXITSTATUS(status));//和23行等价  man
 24         
 25     }

 26 
 27     getchar();
 28 
 29     return 0;
 30 }
 31 #if 0
 32 redult:
 33 5523 5343
 34 <pid!=0> 5523 5343
 35 <pid==0> 5524 5523
 36 1
 37 #endif
~            


test4

  1 ///优先级
  2 #include <stdio.h>
  3 
  4 int main()
  5 {
  6     int a=1, b=2, c=3, d;
  7 
  8 
  9     d= (a, b, c);
 10 //  d= a, b, c;  //d==1;
 11 
 12     printf("d=%d\n", d);//:3
 13 
 14     return 0;
 15 }


test5

//goto用于统一的错误处理
  2 #include <stdio.h>
  3 
  4 
  5 int func(void)
  6 {
  7 
  8     ...
  9 
 10     char *p1 = malloc(sizeof(char)*10);
 11     if ( p1 == NULL ) {
 12         goto ERR1;
 13     }
 14     ...
 15 
 16     char *p2 = malloc(20);
 17     if ( p2 == NULL ) {
 18         goto ERR2;
 19     }
 20 
 21     ...
 22 
 23     char *p200 = malloc(2000);
 24     if ( p200 == NULL ) {
 25         goto ERR200;
 26     }
 27 
 28     ...

 29 
 30     char *p3 = malloc(30);
 31     if ( p3 == NULL ) {
 32         goto ERR3;
 33     }
 34 
 35 
 36     free(p3);
 37 ERR3:
 38     free(p200);
 39 ERR200:
 40     free(p2);
 41 ERR2:
 42     free(p1);
 43 ERR1:
 44     return 0;
 45 }


test6   练习题练习:
1.ABCDE五个人去钓鱼,晚上各自去休息,第二天
A先起来,将鱼分成5份,恰巧多了一条丢掉,拿走了自己的一份
B起来,将鱼分成5份,丢掉一条 拿走自己的一份
CDE都是这样的 都以为自己第一个起床
请问:他们最少钓了多少鱼 ?
算法:穷举法 
          

  1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5     int people = 5;
  6     int fish=6, i=0, tmp;
  7 
  8     for ( ; ; fish++)
  9     {
 10         tmp = fish;
 11         for ( i=0; i<people; i++)
 12         {
 13             if ( tmp%people != 1 )
 14             {
 15                 break;
 16             }
 17             tmp=tmp-1-tmp/5;
 18         }
 19         if ( i == people )
 20         {
 21             break;
 22         }
 23     }
 24         printf("fish=%d\n", fish);
 25 
 26     return 0;
 27 }

//自己写完一堆烂七八糟的东西 看老师半分钟敲完 感觉弱爆了   IQ IQ IQ


test7 


  1 //C 没有严格的越界检查
  2 #include <stdio.h>
  3 
  4 int main()
  5 {
  6     int loop=1 , arr[10] = {0}, i;
  7     printf("&loop=%p &i=%p arr=%p\n", &loop, &i, arr);
  8     getchar();
  9     while (loop<4) {
 10         for ( i=0; i<=10; i++) {
 11             arr[i] = 1;//arr[10]=1越界出现意外使得: loop=1 导致死循环(不同机器可以结果不同
 12             printf("1111111111\n");
 13         }
 14         loop++;
 15         printf("222222222\n");
 16     }
 17 
 18 
 19     return 0;
 20 }



test8练习:10个人站一圈,从第一个人开始数数,数到3的人退出,下一个人重新数。请问最后剩下的是第几个人。

//int arr[10] = {0}; //0表示在圈里  1表示出去了

  1 //练习2
  2 #include <stdio.h>
  3 
  4 int main()
  5 {
  6     int arr[10] = {0};
  7     int count=0, i = 0;
  8     int num = 0;
  9 
 10     for ( i=0; num<9; i=(i+1)%10) {
 11         if ( arr[i] == 0 ) {
 12             count++;
 13             if ( count == 3 ) {
 14                 arr[i] = 1;
 15                 count = 0;
 16                 num++;
 17             }
 18         }
 19     }
 20 
 21     for ( i=0; i<10; i++ ) {
 22         if ( arr[i] == 0 ) {
 23             printf("i=%d\n", i);
 24             break;
 25         }
 26     }
 27     return 0;
 28 }


内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值