关于C语言日常使用中的实际问题

1. 深刻教训:

千万不要在程序中随意移动你的指针!!!因为这个小问题搞了一下午+晚上

2. 关于关于字符串空间分配问题:

字符数组的容量必须至少比待存储字符串中的字符数多1.
在分配字符指针空间malloc() 时也必须至少比至少比待存储字符串中的字符数多1,再分配空间后必须及时free(); 释放指针后, 一定要将指针指向NULL。否则p指向的空间是未知数据 p就成了野指针

	char test[5] = "abcd"; //最多四个字符
	char *info = malloc(6);
	memset(info, 0, 6);
	strcpy(info, "abcdef");//此处分配的字符串空间不足,申请6个字符空间,最多5个字符**
	printf("1.%s\n", test);
	//info++;
	printf("2.%s\n", info);
	free(info);
	info = NULL;

3.关于C变量声明的问题

编译器问题——C89和C99

C89规定,在任何执行语句之前,在块的开头声明所有局部变量。

在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。

Visual Studio2013终于开始比较良好地支持C99特性

  1. 源文件保存为.c格式的话变量只能定义在最前,若保存为.cpp格式的话,变量定义较为灵活,不用在最前。
  2. 在C语言里,变量只能在函数的开头处(作用域即{})声明和定义。 在函数里要用到的变量必须要在开头处声明定义。声明定义的前面不能有任何其他非声明定义的语句。全局变量在函数体的外部声明定义。而 C++ 里(.CPP文件是按C++标准编译的),只要在用到变量前对该变量进行声明定义就行了,位置不做特别要求。而C语言的就定了在一个模块里(函数、循环体等)先声明一切所需变量后才能进行相关操作的规定。

希望大家以此为鉴,不要犯低级错误!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值