
C语言
Hola_ya
这个作者很懒,什么都没留下…
展开
-
C语言字符指针变量和字符数组的比较
C语言是没有字符串类型的,字符串是存放在字符型数组中。C语言只有字符变量,没有字符串变量。使用字符指针变量和字符数组的比较:(1)字符数组有若干个原始组成,每隔元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),绝不是将字符串放到字符指针变量中。(2)赋值方式:可以对字符指针变量赋值,但对不能对数字名赋值。 可以采用下面方法对字符指针变量...原创 2018-06-07 08:56:55 · 3263 阅读 · 0 评论 -
内存对齐
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数...原创 2018-07-23 22:59:33 · 213 阅读 · 0 评论 -
typedef与#define
typedef 声明新类型名代替原来的类型1、简单的用一个新的类型名代替原有的类型名typedef int Integer; //指定Integer为类型名,作用与int相同Integer i, j; //作用与int i, j;相同,都是定义两个int类型的变量2、命名一个简单的类型名代替复杂的类型表示方法(1)命名一个新的类型名代替结构体类型...原创 2018-07-29 10:38:10 · 427 阅读 · 0 评论 -
strcpy、strncpy、memcpy的实现
char *myStrcpy(char *dest, const char *src){ if(dest == NULL || src == NULL) return NULL; char *res = dest; while((*dest++ = *src++) != '\0'); return res;}char *my...原创 2018-07-23 09:26:49 · 221 阅读 · 0 评论 -
#define
#include<stdio.h>#define MIN(x, y) ((x) <= (y) ? (x) : (y))#define Square(x) (x) * (x)int main(){ int a[] = { 3, 7, 23, 45 }, b = 9, c = 3; int *p = a; printf("%d\n", *p++); printf...原创 2018-07-19 09:05:06 · 559 阅读 · 0 评论 -
C 引用和指针
原文链接引用是什么引用不是重新定义一个变量,而是给一个已经存在的变量取的别名。 语法:类型& 引用变量名=已定义的变量名 引用的特点: 1、一个变量可以有多个别名。 2、引用必须初始化。 3、引用只能在初始化的时候使用一次,不能在作为其它变量的别名。 引用注意事项:1.引用必须被初始化; 2.引用一旦与初始值对象绑定,就不会变化(引用从一而终)!!! 3.引用初始...转载 2018-07-18 22:27:37 · 408 阅读 · 0 评论 -
C 预处理器
源代码—>预处理—>编译—>优化—>汇编—>链接—>可执行的文件。 预处理器运算符C 预处理器提供了下列的运算符来帮助您创建宏:宏延续运算符(\)一个宏通常写在一个单行上。但是如果宏太长,一个单行容纳不下,则使用宏延续运算符(\)。例如:#define message_for(a, b) \ printf(#a " and ...转载 2018-06-18 10:59:47 · 247 阅读 · 0 评论 -
用malloc动态申请一个二维数组的三种方法
原文链接:https://blog.youkuaiyun.com/fengxinlinux/article/details/51541003方法一:利用二级指针申请一个二维数组。#include <stdio.h>#include <stdlib.h> //mallocint main(){ int **arr; //二级指针动态申请二维数组 ...转载 2018-06-08 19:29:55 · 5244 阅读 · 0 评论 -
函数中的*p、p[]的区别
#include <stdio.h>char *test(){ char *p = "hello world"; return p;}int main(){ char *p = test(); printf("%s\n", p); return 0;}输出:hello world #include <stdio.h>char...原创 2018-06-08 17:12:55 · 1936 阅读 · 0 评论 -
C语言 数组
int a[] = {1, 2, 3, 4};int *ptr = a + 1; //a+1表示表示的是数组a的第一个元素的地址printf("%d", *(ptr - 1));输出结果为 1。int a[] = {1, 2, 3, 4};int *ptr = (int*)(&a + 1); //(int *)(&a + 1)中的(...原创 2018-06-07 21:44:30 · 335 阅读 · 0 评论 -
C 语言 共用体(联合体)union
几个不同的变量共享一段内存的结构,称为“共用体”类型的结构。定义共用体类型变量的一般形式为:union 共用体名{ 成员表列}变量表列;例如:union Data{ int i; //表示不同类型的变量i,ch,f可以存放到同一段存储单元中 char ch; float f;}a, b, c; //变量在地...原创 2018-06-07 14:23:14 · 4881 阅读 · 0 评论 -
C语言 指向函数的指针
函数指针:如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。 可以定义一个纸箱函数的指针变量,用来存放一个函数的起始地址,这就意味着次指针变量指向该函数。例如:int (* p)(int, int); //p的类型为int(*)(int, int) 定义...原创 2018-06-07 10:29:14 · 1129 阅读 · 0 评论 -
C库 localtime() asctime()
原文链接描述C 库函数 struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。声明下面是 localtime() 函数的声明。struct tm *localtime(const time_t *timer) tm *localtime(const...转载 2018-05-29 09:54:19 · 534 阅读 · 0 评论 -
字符串与整型互相转化的库函数
将整型转化成字符串:sprintf,在string.h#include &amp;amp;amp;amp;amp;amp;lt;string.h&amp;amp;amp;amp;amp;amp;gt;int sprintf( char *buffer, const char *format, [ argument] … );参数列表 buffer:char型指针,指向将要写入的字符串的缓冲区。 format:格式化字符串。 [argument]…:可选参原创 2018-08-01 20:34:59 · 1960 阅读 · 0 评论 -
改善C++程序的150个建议
1. 不要让main函数写成void main要想保证程序具有良好的可移植性能,就要标明 main 函数返回 int,而不是 void。强烈建议使用以下形式:int main(){ // some processing codes return 0;}2. 赋值符“=”和运算符“= =”的区别下面的代码就是一个典型的例子:if(nVa...转载 2017-12-07 11:21:54 · 728 阅读 · 0 评论 -
字符数组中的0、'\0'、'0' 的区别;转义字符 \
VS2013环境,可见,在字符数组中,0和'\0'都是字符结束符,'0'为ASCII值,可直接输出。八进制转义字符 \ooo 1到3位八进制数所代表的任意字符 三位八进制 它是由反斜杠’\’和随后的1~3个八进制数字构成的字符序列。例如,’\60’、’\101’、’\141’分别表示字符’0’、’A’和’a’。因为字符...原创 2018-06-04 15:09:22 · 14670 阅读 · 1 评论 -
stm32程序运行时间 简单测试记录
int main(void) { const char *topics[] = {"HelloNUAA"};------------------------------------------0.3us uint8_t Key = 4;--------------------------------------------------------------...原创 2018-07-24 10:48:45 · 6484 阅读 · 0 评论