C语言学习笔记

C语言知识点

标签(空格分隔): c


这篇文档将会不断更新

#include <stdio.h>
int main()
{
    int i=0,a=1,b=2,c=3;
    i=++a||++b||++c;
    printf("%d %d %d %d",i,a,b,c);
}
结果是1 2 2 3
解释:||运算符的"懒惰性" ++a为2而且是或的关系 i肯定为1 就不继续执行了

字符串要注意的###

char ccString1[]="Is Page Fault??";
char ccString2[]="No Page Fault??";
strcpy(ccString1,"No");
if(strcmp(ccString1,ccString2)==0)
   cout<<ccString2;
else
   cout<<ccString1;
   
执行strcpy(ccString1,"No"); ,ccString1变为"No\0Page Fault??",会将字符串的结束符'\0'放入,所以比较时返回false,执行cout << ccString1; 输出时遇到结束符'\0'就结束,只输出“No”
----------------------------------------------------------------
char dog[]="wang\0miao;
sizeof(dog)为10
strlen(dog)为4
wang,miao占8个字节
'\0'占一个字节 但是会隐形的加上一个'\0'故sizeof(dog)为10
strlen()计算字符串长度遇到'\0'就停下来了
Linux下多少个"-"将被打印:
int main(void){
  int i;
  for(i=0;i<4;i++){
  fork();
  printf("-\n");
 }
 return 0;
}
考察fork()
2+4+8+16 = 30

堆与栈的区别###

堆是使用malloc()、calloc()、realloc()等函数动态分配的,不可能静态分配,使用alloca()函数可以动态分配栈的内存空间,释放的时候由编译器自己释放。

不同平台上的字节数###

(1)16位平台  
char         1个字节8位 
short        2个字节16位 
int          2个字节16位
long         4个字节32位 
指针         2个字节16位  
(2)32位平台  
char         1个字节8位 
short        2个字节16位 
int          4个字节32位 
long         4个字节32位
long long    8个字节64位  
指针         4个字节32位  
(3)64位平台  
char         1个字节 
short        2个字节
 int         4个字节  
long         8个字节(区别) 
long long    8个字节  
指针         8个字节(区别)

#include <stdio.h>
#include <stdlib.h>

struct A{
   unsigned int a; //对于开始连续的第一个8字节内存,a占4字节 
   char b[2];//b[]占1*2字节,在a后的连续2字节内存放,还剩2个
   double c;//c占8字节,第一个8字节还剩2字节不足以存放c,自动补充该2字节。并同时开辟第二个8字节内存存放c
   short d; //d占2字节,开辟第三个8字节,存放d。剩余的6个字节补齐。故总共开辟了8*3=24字节存放该数据结构

};
int main()
{
    printf("%d\n",sizeof(A));
    getchar();
    return 0;
}
结果为24
case 后面的常量表达式实际上只起语句标号作用 , 而不起条件判断作用 , 即 " 只是开始执行处的入口标号 ".  因此 , 一旦与 switch 后面圆括号中表达式的值匹配 , 就从此标号处开始执行 , 而且执行完一个 case 后面的语句后 , 若没遇到 break 语句 , 就自动进入 下一个 case 继续执行 , 而不在判断是否与之匹配 , 直到遇到 break 语句才停止执行 , 退出 break 语句 . 因此 , 若想执行一个 case 分之后立即跳出  switch 语句 , 就必须在此分支的最后添加一个 break 语句 .

#include <stdio.h>
 
int main()
{
 char x = 'B';
 switch (x){
   case 'A':printf("A");
   case 'B':printf("B");
   case 'C':printf("C");
   default: printf("D");
 }
 结果为BCD
void change(int*a, int&b, int c){ 
    c=*a; 
    b=30; 
    *a=20;
}
int main ( ){ 
     int a=10, b=20, c=30; 
     change(&a,b,c); 
     printf(“%d,%d,%d,”,a,b,c); 
     return 0;
}
传值、传指针、传引用;其中传值不会改变变量的值,传指针和传引用会改变变量的值。
传值的情况,函数的参数会产生临时空间,函数结束就会释放空间,因此不会改变主函数中变量的值;
传指针即传递的是地址,将主函数中变量的地址传到函数中,而不会产生临时变量,因此会改变量的值;
传引用的情况,就是传递的变量的别名,因此也会改变变量的值。
C语言math库中floor函数和fabs的编写
double floor(double x)
{
    return (double)(int)x;
}

double Fabs(double x)  
{  
    return x>1e-10?x:-x;  
}

C语言math exp(x)函数和log(x)函数的编写
double Exp(double X)
{
    double Result=1.0,Precious=X,Xn=1.0,Fac=1.0;
    int n=1;
    while(Precious>1e-6)
    {
        Fac*=n;
        Xn*=X;
        Precious=Xn/Fac;
        Result+=Precious;
        n++;
    }
    return Result;
}

double Log( double a )
{
    int N = 150;
    int k,nk;
    double x,xx,y;
    x = (a-1)/(a+1);
    xx = x*x;
    nk = 2*N + 1;
    y = 1.0/nk;
    for(k=N;k>0;k--)
    {
        nk = nk - 2;
        y = 1.0/nk + xx*y;
    }
    return 2.0*x*y;
}
详情见《实用数值算法》
double Pow(double X,double Y)
{
    return Exp(Y*Log(X));
}

double Sqrt(double X)  
{  
  return Pow(X,0.5);  
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,148评论 0 2
  • C语言笔记 1.Printf输出函数语法printf的语法 输出语句(1)printf("你想输出的内容");(...
    wangbei8855阅读 493评论 0 2
  • 第一个C语言程序: 1.#include 是C语言的预处理指令,所谓预处理指令就是在编译之前作得处理,通常以#开头...
    追风筝的蝙蝠侠阅读 506评论 0 0
  • 第一部分C语言的组成 一.基本数据类型 java中有八中基本数据类型,而在c/c++中没有byte和boolean...
    lemonCode阅读 435评论 0 1
  • C/C++格式化字符串说明 C++的格式化字符串经常用作格式化数字的输出、字符串合并和转换等等很多场合。 1. 格...
    优质睡眠阅读 343评论 0 0