C语言中一些易混淆忽视的知识点

C语言中一些易混淆忽视的知识点

一、使用 VS2013 作为编译环境时需要注意的几点问题

  1. 在 VS2013 中使用 scanf 输出函数时,编译会报错,提示我们使用scanf_s等相应的函数,虽然这种方法更有利于程序的安全,但很多时候很不方便,不利于代码的移植。
    我们可以采取更好的方法:
    1)添加预处理#pragma warning(disable:4996)忽视该警告
    2)添加预处理#define _CRT_SECURE_NO_WARNINGS

  2. 一般情况使用 VS2013 编译运行C语言代码时,可执行窗口会闪退从而看不见结果,如果不想让其消失,需程序中添加:system("pause");
    system()就是调用(DOS)系统命令(和shell命令);
    pause ,即DOS命令集合中的暂停命令;
    注意:使用该语句需调用头文件#include

//Eg1:
#include
#include
#pragma warning(disable:4996)

int main()
{
     
	int a = 0;
	printf("请输入执行操作:1、hello world 2、exit\n");
	scanf("%d", &a);
	if (a == 1)
		printf("hello world!\n");
	else
		exit;
	system("pause");
	return 0;
}

二、字符与字符串

  1. C语言的字符数据类型(char)占一个字节,其本质是整型;

  2. C语言存在字符串,但没有字符串类型!
    即不能直接定义字符串变量:string str = ''abcd'';//错误!
    C语言间接定义字符串:通过数组char str[] = ''abcd'';char *str = ''abcd'';指针保存;

  3. 字符串的大小(带’\0’)与长度(不带’\0’)是两个不同的概念;
    通过 sizeof(按位求长度操作符)可以求出字符串大小:sizeof(str);
    通过 strlen 函数(该函数识别到’\0’停止计数)可以求出字符串长度;

  4. 所以从终端输入或从终端显示的内容都是字符;即当需要输入数字1234时,用户从键盘输入的是字符 1 2 3 4,通过 scanf 函数格式转换,printf 亦然。

三、函数、数组、关键字、操作符

  1. C语言的函数默认返回值是整型(int);
  2. 临时变量不初始化默认值为随机值;
  3. 数组可以整体被初始化,但是不能被整体赋值;
  4. define 宏替换,利于代码的可维护(注:define 不是关键字,它是编译器的预处理实现)
    #define MAX 100 用MAX替换100
    #define ADD(x,y) ((x)+(y)) 用ADD(2,3)替换2+3(替换过程不进行计算)
  5. 关键字:const 使变量不能直接被修改;
  6. 关键字:extern 用来对变量或函数的声明 (声明可以多次)
    extern int g_val;声明变量
    extern void test();声明函数
  7. 关键字:static
    修饰局部变量:使该变量生命周期变为全局,但作用域不变;
    修饰全局变量:使全局变量只能在本文件使用,不影响生命周期;
    修饰函数:使该函数只在本文件有效;
  8. 操作符 sizeof :按位求长度操作符;
  9. 三目操作符 :exp1 ? exp2 : exp3;

四、指针

  1. 定义一个指针本质是定义一个指针变量,用来存放地址;
  2. C语言指针的存在提高了数据查找效率;
  3. //整型
    int a = 10; //整型变量放整型
    a = 20; //变量在左,左值使用变量的空间属性
    int b = a; //变量在右,右值使用变量的内容属性
    //类比指针
    int *p = &a;//指针变量放指针
    p = &b; //左值使用变量的空间属性
    int *q = p; //右值使用变量的内容属性
  4. 指针的解引用(*p)代表指针所指向的目标;
  5. 指针变量的大小与指向的内容等等无关,
    在32位系统中指针大小位4个字节,
    在64位系统中指针大小位8个字节;

你可能感兴趣的:(c语言,指针,字符串)