
C/C++
JQ_AK47
这个作者很懒,什么都没留下…
展开
-
变量定义和变量声明的区别
变量声明变量定义区别原创 2016-01-19 13:34:05 · 2042 阅读 · 0 评论 -
C语言中字符串赋值处理方式
C语言中,字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。因为c语言没有直接对字符串提供语法糖方面的支持。而且C标准库很多方法处理字符串是以空字符结尾为前提的,这个必须要记住。char *p,a='5';p=&a; //显然是正确的,p="abcd"; //但为什么也可以这样赋值??答: 双引号做了3件事: 1.申请原创 2016-11-18 09:45:28 · 46638 阅读 · 0 评论 -
笔试题-输入一个字符数组将这些字符串按顺序合并输出-指针数组-数组指针-函数指针-指针函数
#include <stdio.h>#include <stdlib.h>#include <string.h>void linkString(int count, char *chptr[]);/**考察点就一个 指针数组 指针数组的意思是:指针变量组成的一个数组,形式如下 int *ptr[100]; //注意ptr哪里没有括号 数组指针的意思是:定义了一个指针,该指针指向一个原创 2016-11-14 21:59:59 · 1031 阅读 · 0 评论 -
Android NDK中开发中字符串的处理
1、先来个失败案例 char *src=js;//js是java传递过来的字符串引用 char *c="I'm from Jnilib"; size_t length=strlen(src)+strlen(c); memcpy(realloc(src,length+1),c,strlen(c)); *(src+length)='\0'; return src;上原创 2016-11-30 18:27:40 · 1280 阅读 · 0 评论 -
Android Studio NDK开发在C代码中将Log输出到logcat上面
Android Ndk开发中在原生代码那边是不能用printf函数的,用了也输不出来。需要android提供的log.h服务。 第一步:在对应模块下的build.gradle文件中ndk节点配置需要加入log配置: ndk{ moduleName "javacallc" //so文件,编译生产的动态链接库文件自动加前缀lib ldLibs "l原创 2016-12-01 22:18:28 · 3238 阅读 · 0 评论 -
NDK数组操作-在C中直接操作java的数组
/** * jni对数组运算 * 在C中没有创建新的数组副本,直接在原来的java数组上面修改。然后返回了jintArray类型数据 */JNIEXPORT jintArray JNICALL Java_com_org_vincent_javacallc_JNI_increseArray (JNIEnv * env, jobject job, jintArray jarr){原创 2016-12-01 23:11:45 · 1144 阅读 · 0 评论 -
NDK中开发中比较字符串是否相等,
/** 利用Java的String类来完成字符编码转换*/char* Jstring2CStr(JNIEnv* env,jstring jstr){ LOGI("enter CStr2Jstring 1"); char* rtn = NULL; jclass clsstring = (*env)->FindClass(env,"java/原创 2016-12-01 23:58:23 · 3613 阅读 · 0 评论 -
memcpy内存复制代码的安全版本
C代码关于memcpy复制内存函数的安全版本#include <stdio.h>#include <stdlib.h>#include <string.h>void *Memcpy(void *dst, const void *src, size_t size);int main(int argc, char *argv[]){ char buf[100] = "vincentabcd原创 2016-10-15 23:19:57 · 4626 阅读 · 0 评论 -
C语言输出指针变量地址以及指向变量的地址
#include <stdio.h>#include <stdlib.h>int main(){ int a = 100; int *ap = &a; printf("%p\n",&a);//输出:002AF744 输出的是a变量的地址 printf("%p\n",ap);//输出:002AF744 通过指针变量ap输出a变量的地址 printf原创 2016-12-01 22:08:14 · 32878 阅读 · 0 评论 -
int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i<argc; i++) cout<<argv[i]<<e原创 2017-01-10 17:16:19 · 1075 阅读 · 0 评论 -
散列表解释
散列表(也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据元素)的比较操作。 散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必须要在数据元素的存储位置和它的关键字(可用key表示)之间建立一个确定的对应关系,使每个关键字和散列表中一个唯一的存储位置相对应。因原创 2017-02-12 10:16:20 · 1134 阅读 · 0 评论 -
Ubuntu下用C语言实现客户端服务器交互
Socket-Server.c服务端代码#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sy翻译 2017-01-10 17:44:01 · 3131 阅读 · 1 评论 -
C标准库函数-字符串复制和字节复制函数
这两个函数在基础性笔试中出镜率很高,所以有必要好好总结下:strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。strcpy只用于字符串复制,并且它不仅复制源字符串内容之外,还会复制源字符串的结束符。这是strcpy函数的重要特点 strcpy函数头文件:#include <string.h> 已知strcpy函数的原型是:char* strcpy(c原创 2016-11-14 22:58:21 · 4549 阅读 · 0 评论 -
C语言-用了一下午三小时查找出来的bug_报段错误 (核心已转储)
操作的数据结构 typedef struct { char* ptrS;//缓存字符串的栈底指针 size_t top, size; /*size 是当前的堆栈容量,top 是栈顶的位置 */ } stack; /*json 字符串结构体 */ typede原创 2016-11-14 17:48:23 · 1020 阅读 · 0 评论 -
变量的六个属性
变量的六个属性转载 2016-01-19 14:44:29 · 1222 阅读 · 0 评论 -
void free(void *ptr)调用后ptr的值是什么
使用后该指针变量ptr一定要重新指向NULL,防止野指针出现,有效 规避误操作。比如如下:当然这是C版的;不全但是最后结果看截图。可以知道ptr指向还是原来的内存单元,只不过是该内存单元被标示可擦除了。 typedef struct data{ int year; char *name;}Data;Data *pd=malloc(sizeof(Data)); pd->nam原创 2016-01-19 14:52:19 · 3044 阅读 · 0 评论 -
C语言结构体类型声明和定义标准形式
结构体类型声明和定义的标准形式原创 2016-01-19 14:57:38 · 16435 阅读 · 0 评论 -
extern关键字理解
extern 理解C原创 2016-01-19 15:17:13 · 1307 阅读 · 0 评论 -
C源文件包含自己的头文件好处
一般一个我们工程中一个c源文件要有一个对应的头文件。构成一个功能模块。包含一个头文件功能优点有如下 1、保持定义和声明的一致性 2、使得编译能进行引言: 我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。以前的认知: 我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中对外提供定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文原创 2016-01-19 15:44:26 · 2784 阅读 · 0 评论 -
C语言的面向对象编程
C语言面向对象思想编程原创 2016-01-19 21:17:21 · 1400 阅读 · 0 评论 -
ubuntu下用Gcc编译器编译c语言的静态和动态链接库范例
我在一个目录下新建hello.h hello.c main.c三个文件,我们需要将hello.c文件编译成静态库以及动态库。在存放文件目录下打开一个终端。三个文件hello.h(见程序1)为该函数库的头文件。 hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏幕上输出”Hello XXX!”。 main.c(见程序3)为测试库文件的主程序,在主程序中调用了公用函原创 2016-06-29 21:35:46 · 4757 阅读 · 0 评论 -
散列表的C程序实现,基于数组实现可以实现增删改查操作,
散列表首先建立了一个散列数组,数组类型_Hash_Header类型的指针数组。_Hash_Header类型是一个结构体。里面包含了一个指向链表节点的指针,类型为_Link_Node。通过hash_func计算每个节点的散列地址用于表示存放地址,让后依据这个散列地址找到列表的首个节点。插入到列表最后。 /*************************************************原创 2016-10-19 23:38:14 · 2117 阅读 · 1 评论 -
C语言错误:expected declaration or statement at end of input
可能错误:某一个函数或者变量没有在使用之前声明。某个地方少了个括号。(这个最坑)原创 2016-10-19 23:46:37 · 63580 阅读 · 9 评论 -
C语言strtod函数DEMO
strtod函数原创 2016-11-12 22:53:15 · 1635 阅读 · 0 评论 -
C语言const关键字的四种用法
博客: http://www.cnblogs.com/zhangfeionline/p/5882790.html#include <stdio.h>/*gcc中,const是通过编译器在编译的时候执行检查来确保实现的(也就是说const类型的变量不能改是编译错误,不是运行时错误。)所以我们只要想办法骗过编译器,就可以修改const定义的常量,而运行时不会报错。*/int main(int原创 2016-11-13 22:19:37 · 7705 阅读 · 0 评论 -
指针数组 数组指针 指针函数 函数指针绕口令
1.数组的四种访问方式 定义数组 a[]; 指针 *p 指向数组a; (1) 利用数组的下表进行访问 a[i]; (2) 数组名+地址的偏移量i , *(a+i) (3) 利用指针 p 进行下表访问 p[i] (4) 指针p原创 2017-02-11 16:27:02 · 998 阅读 · 0 评论