形如这个样子:int a,float b,char *p="12343drf";
1、a,b要放入到常量区的,这个无庸置疑;
2、那么有时候,我想定义一些状态,做为返回值给我的用户;
用enum当然是个好办法,用标准的 #define XXX ss也没有什么不可以;
用enum的情况,他只能返回定义好的数字值,这个不多说,不明白,自己去观察内存;
用宏定义,你也只能是定义在.h或者是.c内部,你如果想改变还得去重新编译、连接生成程序,重新分发给用户,麻烦;忌讳。。。
如果用一个字符串去定义这些状态,完全可以写到文本之中,用的时候,用指针去定位,加上指针移动步长,就可以了;这个方法好!
1、a,b要放入到常量区的,这个无庸置疑;
2、那么有时候,我想定义一些状态,做为返回值给我的用户;
用enum当然是个好办法,用标准的 #define XXX ss也没有什么不可以;
用enum的情况,他只能返回定义好的数字值,这个不多说,不明白,自己去观察内存;
用宏定义,你也只能是定义在.h或者是.c内部,你如果想改变还得去重新编译、连接生成程序,重新分发给用户,麻烦;忌讳。。。
如果用一个字符串去定义这些状态,完全可以写到文本之中,用的时候,用指针去定位,加上指针移动步长,就可以了;这个方法好!
为什么,当初C的设计者要定义字符串常量,我想这也是一个解释吧;
3、既然是常量,当然要放入到常量区了;
4、那么为什么要用一个指针类型去定义呢,正如刚才所说,为了,指针有偏移的特性,可以用char *p;p++;的方法指找自己想要的东西;
那么 char *p="12343drf"; printf("$s",p);里面是什么东西呢,根本内存的结果显示,是1234drf和p的地址;这个是vc把p作为指针和常量,二重义的结果;
4、那么为什么要用一个指针类型去定义呢,正如刚才所说,为了,指针有偏移的特性,可以用char *p;p++;的方法指找自己想要的东西;
那么
5、那么如果我用 printf("%s",p++);的结果是 "2343drf",如果我想要'd'这个怎么办?
用数组去格式化这个内存地址呀,数组跟指针是个差不太多的概念;
形如这样,char q[]=p;肯定是错的;用q=p吧;也是错的;怎么弄呢?p[5],就可以了;
用数组去格式化这个内存地址呀,数组跟指针是个差不太多的概念;
形如这样,char q[]=p;肯定是错的;用q=p吧;也是错的;怎么弄呢?p[5],就可以了;
这只不过是想告诉你的操作系统,我要把char步长的指针去操作内存;而已你还可以这样
typedef struct node
{
} Node;
char *p=(char *)Node;这样去操作;