
c
文章平均质量分 68
slj_win
这个作者很懒,什么都没留下…
展开
-
数组指针与函数指针
#include "stdafx.h"void te_array_ptr(void){//correct//char a[10] = "123456";//char (*p)[10];//p = &a;//printf("%c\r\n",(*p)[1]);//correctchar a[10] = "123456";char (*p)[10] =原创 2014-03-19 17:07:04 · 601 阅读 · 0 评论 -
C语言运算符优先级 详细列表
恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表)转载 2012-05-29 08:35:47 · 699 阅读 · 0 评论 -
嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )
一.ANSI C/C++方面的知识 1、简答题。 1、 如何在C中初始化一个字符数组。 逐个字符没有考虑到字符串结束符‘\0’,所以会产生意想不到的错误。 比如以下程序:int main(){ int i; char p[6] = {''''a'''',''''b'''',''''c'''',''''d'''',''''e'''',''''f''转载 2012-01-16 11:48:04 · 1155 阅读 · 0 评论 -
16道嵌入式C语言笔试面试题(经典!)
1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整转载 2012-01-16 11:52:48 · 1866 阅读 · 2 评论 -
面试题:看数字找规律
第一种----等差数列:是指相邻之间的差值相等,整个数字序列依次递增或递减的一组数。1、等差数列的常规公式。设等差数列的首项为a1,公差为d ,则等差数列的通项公式为an=a1+(n-1)d (n为自然数)。 [例1]1,3,5,7,9,( ) A.7 B.8 C.11 D.13 [解析] 这是一种很简单的排列方式:其特征是相邻两个数字之间的差是一个常转载 2012-01-16 11:31:22 · 19465 阅读 · 1 评论 -
编写函数,判断一个字符串是否是回文
1. 编写函数,判断一个字符串是否是回文。若是回文函数返回值为1,否则返回值为0。回文是顺读和倒读都一样的字符串。在主函数中完成:输入要判断的字符串,调用函数,输出“yes”或“no”。提示:判断一个字符串是否回文,首先第一个字符与最后一个字符比较,若相同,则第二个字符与最后第二个字符比较,依此规律,比较完整个字符串,若都相同得出“是回文”的结果;若其中碰到两个字符不同的情况,则马上得转载 2012-01-16 10:36:29 · 53161 阅读 · 2 评论 -
嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )
一.ANSI C/C++方面的知识 1、简答题。 1、 如何在C中初始化一个字符数组。 逐个字符没有考虑到字符串结束符‘\0’,所以会产生意想不到的错误。 比如以下程序:int main(){ int i; char p[6] = {''''a'''',''''b'''',''''c'''',''''d'''',''''e'''',''''f转载 2012-01-16 09:57:43 · 907 阅读 · 0 评论 -
深刻剖析经典面试题之一:堆和栈的区别
堆(heap)和栈(stack)的区别一、预备知识-程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全转载 2012-01-14 16:52:28 · 683 阅读 · 0 评论 -
想成为嵌入式程序员应知道几个最基本问题!
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII转载 2012-01-16 09:38:02 · 613 阅读 · 0 评论 -
接近开关和欧姆龙的PLC怎么接线?
直流二线型:褐色线接PLC输入点,PLC的com点接到电源正极,电源负极接到蓝色线。NPN型:褐色接电源正,蓝色接电源负,黑色线接到PLC输入点,PLC的com点接到电源正。NPN是漏型,检测到物体时输出低电平信号。PNP型:褐色接电源正,蓝色接电源负,黑色线接到PLC输入点,PLC的com点接到电源负。 PNP是源型,检测到物体时输出高电平信号。转载 2012-06-02 11:12:13 · 3772 阅读 · 0 评论 -
堆区和栈区的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2013-02-25 10:29:05 · 18767 阅读 · 3 评论 -
指针函数与函数指针的区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函转载 2014-03-19 16:46:43 · 659 阅读 · 0 评论 -
详解C语言字节对齐
一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型转载 2014-03-04 11:13:43 · 758 阅读 · 0 评论 -
二维数组和二级指针
入职一年了,这一年自己学到许多,但是忘记也很多,于是决定定下心来整理以前学到的,并且继续学习 二维数组和二级指针,这真是头疼的问题,困扰了我好几次, 先转一下wanpengcoder的二维数组和二级指针前两天写个程序,传参数的时候想传个二维数组进去,结果悲剧了,函数写成Fun (int **p){},原来没有这么写过,以为这么写也是对的,结转载 2014-03-04 17:05:44 · 811 阅读 · 0 评论 -
二维数组和指针的一些感悟
编译器: VC++6.0 win32 platform program数组和指针:(一)一维数组和指针int a[2] = {0x12345678 , 90};int *p;p = a首先 p 指向 a,因为数组的名字就是指针,而且类型是 int 所以这里简单的匹配了。那么*p == a[0] == 0x12345678*(p+1) = a[1] = 90;转载 2014-03-04 16:19:35 · 888 阅读 · 0 评论 -
c语言内存分配函数
三个函数的声明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t nelem, size_t elsize); 都在stdlib.h函数库内原型:extern void *realloc(void *mem_address, uns转载 2014-03-04 14:21:46 · 968 阅读 · 0 评论 -
c语言内存分配函数之间的区别
malloca/alloca: 内存分配函数,与malloc,calloc,realloc类似。但是注意一个重要的区别,_alloca是在栈(stack)上申请空间,用完马上就释放。 alloca包含在头文件malloc.h中,在某些系统中会宏定义成_alloca使用。 注意: 1)在调用 alloca的函数返回的时候, 它分配的内存会自动释放。也就是说,转载 2014-03-04 14:50:31 · 792 阅读 · 0 评论 -
C语言运算符优先级 详细列表
恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号转载 2013-12-14 11:46:23 · 650 阅读 · 0 评论 -
winAVR 全局变量volatile
在试一段小程序的时候,发现在主循环中无法取得全局变量的值,因没有调试手段,卡住了好久后在论坛上找到全局变量加volatile,一试,OK,程序通过之前程序定义是用的static-----------------------------------------------------------------------------------------------关键字static转载 2013-04-05 09:14:33 · 2143 阅读 · 0 评论 -
贴上答案作参考--嵌入式研发工程师面试试题大全(ANSI C/C++方面的知识)
看了一篇叫“嵌入式研发工程师面试试题大全”的文章,觉得里面的题目很有水平,我会分阶段做完这些题目,并贴出来接受大家的指正。今天先贴上“ANSI C/C++方面的知识 ”,有不妥之处希望博友能给出意见,而且有几道本人尚不清楚,需要大家帮助解决。一.ANSI C/C++方面的知识 1、简答题。 1、 如何在C中初始化一个字符数组。 逐个字符赋值:char s[] = {‘A’,’B’,转载 2012-01-16 09:33:24 · 903 阅读 · 0 评论 -
atoi和itoa的C实现
#includestdio.h>int atoi(constchar *str){ int value=0; bool b_plus=true;//判断符号 switch(*str)//过滤符号 { case '+': str++; break; case '-':转载 2012-01-14 16:46:55 · 1019 阅读 · 0 评论 -
strcpy函数返回值的作用
字符串拷贝函数strcpy的原型:char *strcpy(char *strDest,const char *strSrc);strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性: char str[20]; int length = strlen( strcpy(str, “Hell转载 2012-01-14 13:33:52 · 21552 阅读 · 1 评论 -
常见内存错误大全
随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误,在编程时就加以注意,把出转载 2012-01-10 16:31:41 · 657 阅读 · 0 评论 -
内存管理面试题
企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,转载 2012-01-10 16:03:29 · 1072 阅读 · 0 评论 -
为什么指向字符串的指针内容有时可变有时不可变?
如果再栈上分配指针字符串空间,则改变指针内容会有“段错误”,代码:char *str = "good";*str = 'X';printf("%s",str); //会出错但如果通过动态内存分配指针字符串空间,则不会出现这样的错误,代码:char *str = malloc(20);strcpy(str,"good");*str = 'X';printf("%s",转载 2012-01-10 15:33:24 · 932 阅读 · 0 评论 -
BOOL,int,float,指针变量 与“零值”比较的if语句
以下摘自《林锐-高质量c++c编程指南》 /* ---------------------------------------------------------------------------- */if语句是C++/C语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if语句。本节以“与零值比较”为例,展开讨论。 4.3.1 布尔变量与零值比较转载 2012-01-11 09:48:03 · 4549 阅读 · 0 评论 -
对地址的一些操作
要对绝对地址0X100000赋值,我们可以用(unsigned int *)0x100000 = 1234;那么要是想让程序跳转到绝对地址0X10000去执行,应该怎么做?*((void (*) () ) 0x10000 ) ();首先要将0x100000强制转换成函数指针,即:(void (*) () ) 0x100000然后再调用它:转载 2012-01-10 17:10:39 · 631 阅读 · 0 评论 -
assert 断言函数/宏
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。 前置条件断言:代码执行之前必须具备的特性 C里面的宏 宏名:转载 2012-01-10 16:53:13 · 702 阅读 · 0 评论 -
C/C++ 程序设计员应聘常见面试试题深入剖析
找错题 试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10], str1[10]; int i; for转载 2012-01-10 16:30:07 · 418 阅读 · 0 评论 -
sscanf函数的用法
sscanf函数的用法 收藏头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()转载 2012-01-06 16:43:33 · 561 阅读 · 0 评论 -
strcpy函数用法详细解释和其相关问题
char *strcpy(char *dest,char *src); 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。src字符串尾的字符串结束标识符'/0'也会被复制过去,复制完成后s1中的内容会被覆盖掉view plaincopy to clipbo转载 2012-01-10 17:04:49 · 3472 阅读 · 0 评论 -
指针以及malloc
.#include #include void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL;转载 2012-01-10 17:14:01 · 1506 阅读 · 0 评论 -
指针 复杂的声明
int *( *(*fp1)(int) )[10];阅读步骤: 1. 从变量名开始 ---------------------------- fp1 2. 往右看,是“)”,因此往左看,是“*” ------- 一个指针 3. 跳出括号,碰到了(int) ------------ 一个带一个int参数的函数 4. 向左看,发现一个转载 2012-01-12 17:22:07 · 443 阅读 · 0 评论 -
typedef用法小结
一.起别名的两种用法1. typedef (int*) pInt;2. typedef pInt (int*)比如pInt a,b;第一种表示: int*a;int*b;第二种表示: int*a,b;所以第一种更像一个类型,第二种更像宏。二.旧式代码中声明对象typedefstruct tagPoint转载 2012-01-12 17:22:54 · 480 阅读 · 0 评论 -
第七章 右左法则----复杂指针解析
首先看看如下一个声明:int* ( *( *fun )( int* ) )[10];这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明语法之前,不学习一定的规则,想理解好这类复杂声明是比较困难的。C/C++所有复杂的声明结构,都是由各种声明嵌套构成的。如何解读复杂指针声明?右左法则是一个很著名、很有效的方法。不过,右左法则其实并不是C/C++标准里面的内转载 2012-01-12 17:21:27 · 536 阅读 · 0 评论 -
linux网络编程中阻塞和非阻塞socket的区别
阻塞socket和非阻塞socket读操作对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket而言,socket的接收缓冲区转载 2012-01-12 14:59:11 · 2492 阅读 · 0 评论 -
常指针与指针常量的区别
const char *p; 常量指针,指向一块区域,这块区域不可写,只能读。char * const p; 指针常量,指向一块区域,这块区域可读可写,但是指针的值初始后就不能改,类似于一般常量。const char * const p; 上面两种类型的综合,指针指向的区域不可写,可读。指针初始化后不能改。至于有什么用,看具体要求。比如char * stpcpy(char *s1,转载 2012-01-13 10:56:46 · 852 阅读 · 0 评论 -
关void (*signl(int signo,void(*func)(int)))(int);的解析
应该这么解释:signal是一个函数: 它有两个参数。第一个是 int。第二个是指向参数为 int,返回值为 void 的函数的指针; 它的返回值是一个函数指针,一个指向一个参数为 int。typedef void (*pF)(int);// 函数声明void(*signal(int signo,void(*func)(int)))(int);//转载 2012-01-12 17:23:32 · 958 阅读 · 0 评论 -
perror函数,strerror函数,errno
#include // void perror(const char *msg);#include // char *strerror(int errnum);#include //errnoerrno 是错误代码,在 errno.h头文件中;perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符);strerror 是通过参数 er转载 2012-01-12 10:31:23 · 920 阅读 · 0 评论 -
C编程中的malloc()和free()函数使用详解
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte):转载 2012-01-10 17:21:29 · 1041 阅读 · 0 评论