C语言——读书心得2


1.强制类型转换只是在转换时候产生一个临时值赋给要接受的变量,之后就自动销毁了,不会改变原有的变量
2.cout<<sizeof(' ')<<"\n"; //输出1
count<<sizeof('aaa')<<“\n”//输出4
 cout<<sizeof("")<<"\n";//输出1        只是\0

char a;//这里是一字节
printf("%d\n",sizeof(' ')); //4
printf("%d\n",sizeof('a')); //4 C语言为了空间拓展容纳更多字符 规定字符常量为4字节,字符变量一个字节
printf("%d\n",sizeof('add')); //4
printf("%d\n",sizeof("")); //1只是\0
3.全局变量可以定义在可被多个.C文件包含的头文件中

在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

4.float x 与“零值”比较的if语句为  if(fabs(x)<0.00001f)   或者 if(x>-0.0000001 && x<0.0000001)

folat类型的还有double类型的,这些小数类型在趋近于0的时候直接等于0的可能性很小,一般都是无限趋近于0.因此不能用==来判断。应该用|x-0|<err来判断,这里|x-0|表示绝对值,err表示限定误差         用程序表示就是fabs(x)<0.00001f
10.void main()
 {
 char s1[]="ged";
char s2[]="i";
char s3[20];
sprintf(s3,"%s%s%c",s1,s2,'t');//可以实现两个字符串连接
system(s3);//打开文本编辑器

}
5.printf("%f\n",1);//0.000000
     printf("%d\n",1.0);//0
printf 不管你是什么类型 只要不能按照指定的类型解析 就会返回0 表示解析失败 不会进行类型转换
底下这样进行强制类型转换就可以了
printf("%f\n",(float)1);
printf("%d\n",(int)1.0); 
 printf("%d\n",1/2); //向零靠齐取舍,进行隐士类型转换  0

printf("%f\n",3/2);//结果是 0.000000  商 1 按照 Printf 所设置的浮点形式 解析失败 返回0
printf("%f\n",3/2.0); //结果是 1.500000

#include<stdio.h>
#include<stdlib.h>
int main()
{
  char ch='A';
  int num = 1;
  double d=1.0;
  float f=1.0;
  printf("%d\n",sizeof(ch+num));  //4
  printf("%d\n",sizeof(ch+d));//8
  printf("%d\n",sizeof(d+num));//8
  printf("%d\n",sizeof(ch+f));//4
  printf("%d\n",sizeof(f+num));//4
   return 0;
}   //加减乘除是可进行隐士类型转换,赋值号可以自动进行类型转换
int x=3.6; //赋值号 把3.6转换为3,大数准换小数会失精度



printf("%c\n",(char)65.0);//强转 输出 A
rprintf("%c\n",65.0); //    解析失败不输出

6.  库函数自带的数制转换函数
#include<stdio.h>
    #include<stdlib.h>
int main() 
{
   int num;
    printf("请输入整数:");
   scanf("%d",&num);
   char str[32];
 _itoa(num,str,2);//第一个参数是要转换的数据,第二个参数是要保存的字符串,第四个是要转换的进制数
 //itoa(num,str,2);
 printf("%s\n",str);
    itoa(num,str,16);
 printf("%s\n",str);
 itoa(num,str,16);
 printf("%s\n",str);
 
  system("pause");
 
   return 0;
}
7.

声明变量的意义

C语言为什么要规定先声明变量呢?为什么要指定变量的名字和对应的数据类型呢?

1)建立变量符号表。

通过声明变量,编译器可以建立变量符号表,如此一来,程序中用到了多少变量,每个变量的类型是什么,编译器非常清楚,是否使用了没有声明的变量,编译器在编译期间就可以发现。从而帮助了程序员远离由于疏忽而将变量名写错的情况。

2)变量的数据类型指示系统分配多少内存空间。

3)变量的数据类型指示了系统如何解释存储空间中的值。

同样的数值,不同的类型将有不同的解释。int占据4个字节,float也占据4个字节,在内存中同样也是存储的二进制数,并且这个二进制数也没有标志区分当前是int型还是float型。如何区分?就是通过变量的数据类型来区分。由于声明建立了变量符号表,所以系统知道变量该如何解释。

4)变量的数据类型确定了该变量的取值范围

例如短整型数据取值-3276732767之间。

5)不同的数据类型有不同的操作

如整数可以求余。C语言用符号”%”表示求余。整数可以,实数不可

8.变量的概念及本质:

变量命名规则:

标示符:

1、程序中用于标识常量、变量、函数的字符序列。

2、只能由字母、数字、下划线组成

3、第一个字母必须是字母或下划线,大小写有区别,不能使用C语言的关键字。

4、如果变量不初始化,就会默认读取垃圾数据, 有些垃圾数据会导致程序崩溃。

 变量的本质一段连续内存空间的别名

1.程序通过变量来申请和命名内存空间 int a = 0;(变量名a在代码区,是0这个四字节内存空间的别名)

2.通过变量访问内存空间

9.修改变量的三种方法

     直接修改:int a = 10;   a=20;

     间接修改:内存有地址编号,拿到地址编号也可以修改内存;

                       外挂原理就是通过变量内存地址修改变量值

                       &a=1245024;

                      *((int *)(1245024)) = 10;

        C++中引用,就是别名修改





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值