美文网首页
函数指针函数数组指针数组双重指针char*你怕了吗反正我怕

函数指针函数数组指针数组双重指针char*你怕了吗反正我怕

作者: 鸡大 | 来源:发表于2016-10-10 17:00 被阅读0次

对没错这篇是C


指针和地址和引用以及*和&

  • 指针指向一个内存空间的地址,sizeof(指针)=sizeof(int),32位为4

    • 数组的指针指向数组的地址,也是第一个数组元素的地址 eg:char* p=s; =&s; =&s[0];
    • char** 是一个双重指针,指向数组地址的指针 eg:char ** pp=&s;
  • * wc想打架为什么用*标识粗斜体

    • 声明变量的时候表示这是一个指针变量:int *p;
    • 赋值的时候表示取内容(值):int a=*p;
    • 形参表示参数类型为指针
    • 实参同赋值
  • &

    • C语言中叫取地址符,C++中叫引用,莫搞混
    • 出现在赋值语句右侧或是实参的位置,表示取元素的地址
    • 出现在赋值语句左侧或是形参,表示引用,又叫别名,其实就是元素对象本身,不new不copy,在函数中表示会直接修改传入参数的值并”返回“
    • 指针可以指向NULL,但引用不可以,引用的对象不能为空

堆栈内存分配就先放这篇了


C的字符串是包装程度最低的字符串

  • char *
    • char * 是c语言中的特殊结构,可以指向一个字符串(c_str),也就是一个字符数组
      eg:char * s="Hello World."
    • char *和char[]并不是一回事,char *指向一个常量字符串,内容不变,char[] 是一个字符数组,地址和容量不变,但内容可变,具体看这里
  • string的分割操作:
    std::string 没有提供split方法,但是可以结合str.find(c,index)和str.substring(index,length)方法,while循环,在不返回std::vector的情况下还算方便的实现

C(++)是不对数组下标是否越界进行检查的

  • 内存算你的,new完没释放炸了也算你的
  • 结构体、类的赋值是按照变量的声明顺序来的,不是按照变量名,所以不同结构体可以直接用类型转换赋值而不报错(即使是运行时),对于目标结构体中不存在的变量,会将源结构体对应的“位置(地址)"的值拷过来,值不一定会变成什么
  • memcpy这种东西太霸气了,由于参数是指针(首地址),无视类型长度,length写多长他就能copy多长,搞坏了一块数据还不一定会闪退
  • 如果发现某个变量的值(特别是类变量)莫名其妙的变了,去看看它声明所在的上一个变量(内存空间)是什么,基本上是对那个变量越界赋值了,然后挤入了下一个变量的空间,就。哦下一个变量如果操作了[-1]也是有可能搞死当前内存区域的

局部变量一定要初始化

  • 否则就按照编译器的喜好来了,g++下int可能是4248523也可能是1986687962(数组),bool型是0,vs下可能是-858993460,char就更随意了,任意字符都是有可能的?
  • 类变量同理,关键是bool,vs默认是true,g++、Android、ios下是0
  • 函数返回值同上

据说Android5.0以上sprintf遇到中文会截断,作为代替,使用stringstream<<来连接字符串;
const char* 转char *:const_cast<char *>(str.c_str())
但是使用ss的话要小心BYTE(unsigned char)这种类型,它本质还是char,和uint不同,BYTE b=8,使用ss连接得到的结果是x8,如果一定要这样连接,需要把b+0再-0...


lambda表达式

cocos scheduleOnce([=](float dt){//sth},1f,"Name"); //其中Name是必须的


cocos2d-x编Android

cocos辣鸡 我不管cocos就是辣鸡
project.android/jni/Android.mk里面的LOCAL_SRC_FILES :=【】,里面除了最后一个main.cpp不要动,其他到win32/*.vcxproj 里所有的ClCompile复制出来,替换成’../../Classes/xxxx.cpp \‘的格式,复制进来
NDK版本呵呵
cocos studio编译的话一堆sdkndkant的路径在配置中配置,不需要设置环境变量,命令行需要设置环境变量为几个Root

cocos的proj.android使用android studio 调试和编译

直接导入的话可以参考这篇,非常详细
要调试的话需要manifest文件中<application android:debugable:true> release版本记得去掉
这样导入因为不是gradle类型的项目不能设置build type为debug和release,要使用gradle的话需要 (cocos compile -p android --android-studio //可能不需要,但每次都是先做了这步的),再导入proj.android,导入时要设置libcocos2dx的路径,在gradle里添加
signingConfigs {
release {
storeFile file("xxxx.keystore") //这堆和ant.propertiy那里面的内容一致
storePassword "xxxxxxxx"
keyAlias "xxxxx"
keyPassword "xxxxxxxx" }
}
buildTypes {
debug { signingConfig signingConfigs.release }
release { signingConfig signingConfigs.release } }
以使用签名打包apk

相关文章

  • 函数指针函数数组指针数组双重指针char*你怕了吗反正我怕

    对没错这篇是C 指针和地址和引用以及*和& 指针指向一个内存空间的地址,sizeof(指针)=sizeof(int...

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • NDK开发—指针、函数、预处理器(二)

    目录 指针、函数、预处理器 1、指针解引用、指针运算数组、指针const char *、 char const *...

  • C语言-2、数组、函数

    数组定义 数组的指针、内存地址、取值 数组大小 函数指针 函数指针2 函数指针3

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • 数组指针/指针数组/函数指针/函数指针数组

    原文地址: 浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。 首先,先说明一个关系:数组...

  • C++运算符规则详解

    int* (*a[5])(int, char*);带指针返回的函数指针数组int *:函数返回值的类型是一个指针变...

  • 指针

    指针 数组指针和指针数组 函数指针和指针函数 指针作为参数 指针多用于处理值传递,减少值复制耗费的内存

网友评论

      本文标题:函数指针函数数组指针数组双重指针char*你怕了吗反正我怕

      本文链接:https://www.haomeiwen.com/subject/kdprettx.html