c基础知识

1、文件组合
 

1、关于函数
    myfun.c
            #include "myfun.h"
    myfun.h
            int myfun(int a, int b);
2、关于主程序
main.c    
            #include "myfun.h"

2、编译 gcc myfun.c main.c -o main

3、数组作为函数参数

在函数内部无法通过这个指针获得数组长度,必须将数组长度作为函数参数传递到函数内部,于是就有了第二个参数 n。

void func(int p[], int n)


3、获取数组长的办法

(1)

int a[10] = {0};
int cnt = sizeof(a) / sizeof(a[0]);

(2)利用库函数

strlen;

4、 返回数组指针

函数int *a(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include <stdio.h>下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺

其中malloc的用法

int *p;

p=(int *)malloc (100*sizeof(int));

5、防止头文件重复包含

#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__

... ... //一些声明语句

#endif

6、 对于sin函数来说 sin(1)中的1代表的是弧度制,转化成角度制则是1/(pi/2)。此函数与matlab中的函数是一样的。

7、从txt中读入数据,往txt中写入数据

//读
    int buf[MAX_LINE];  /*缓冲区*/
	FILE* fp;            /*文件指针*/
	int len;             /*行字符个数*/
	if ((fp = fopen("my_final_78k_v3.txt", "r")) == NULL)
	{
		perror("fail to read");
		exit(1);
	}
	int k;
	for( k=0;k<MAX_LINE-1;k++)
	{
		fscanf(fp,"%d\n",&buf[k]);
		printf("%d\n",buf[k]);
	}
//写
	FILE *fpWrite=fopen("data_test.txt","w");  
    if(fpWrite==NULL)  
    {  
        return 0;  
    }  
    int i;
    for( i=0;i<MAX_LINE-1;i++)  
        fprintf(fpWrite,"%d\n",corr_ptr[i]);  
    fclose(fpWrite); 

8、如果利用gcc编译c文件生成.exe或者.out文件后,虽然显示有生成,但是执行后,显示no such file,则表明编译成功,但是执行不成功,可能是读写文件的问题,大概率是跟路径分隔符有关。 

9、声明大数组

两种方式:

静态数组 static int a[10000];

动态生成 float * pArr = (float *)malloc(sizeof(float)*(MAX_LINE+CHIRP_UP));

注意,尽量要采用动态生成的方式,不然可能会造成SIGSEGV (Segmentation fault) 

10、从指针中读出数据,不能采用的方式

while(corr_ptr != NULL),因为数据结尾可能不是NULL

11、利用gdb调试 ,只需要 .o文件就可以

12、for循环

for(exp1;exp2;exp3)

{ exp4}

执行顺序是exp1 exp2 exp4 exp3 exp2.....

for(int i = 0 ; i< k; i++){exp}

则exp执行k次

14 ,编译带有math库函数的程序,要加入编译选项-lm

要注意,-lm一定要加在最后 ,l就是L的小写形式

15、当定义一个int型的变量的时候,一定需要对其进行初始化,不然可能会产生错误的数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youzjuer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值