您的位置:首页 > 编程语言 > C语言/C++

C语言——读书心得2

2015-03-20 09:46 246 查看
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);//强转 输出 Arprintf("%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)变量的数据类型确定了该变量的取值范围
例如短整型数据取值-32767~32767之间。
(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++中引用,就是别名修改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: