首页 > 代码库 > 2017/03/06学习笔记

2017/03/06学习笔记

char *p="abcdef";//在栈上开辟4字节空间存放指针p,在常量区开辟7空间存放字符串常量"abcdef",并将字符串常量的地址赋值给指针p.所以p指向的内存空间不能被修改

#include <stdio.h>
//字符串反转(普通)
void inverse(char *p){

   int len = strlen(p);
   int i=0,j=len-1;
   while(i<j){
     char tmp = p[i];
     p[i] = p[j];
     p[j] = tmp;

     i++;
     j--;
   }

}

int main(void){

 char *s="123456789";
 inverse(s);
 printf("%s\n",s);
 return 0;
}


//字符串反转(递归)
#include <stdio.h>
#include <string.h>

void myinverse(char *p,char *dest){

 if(p==NULL || dest == NULL){
    return;
 }

 if(*p==\0){
   return;
 } 
 myinverse(p+1,dest);
 strncat(dest,p,1);
}

int main(void){

 char *s="123456789";
 char dest[100] = {0}; //这里需要初始化为0;
 myinverse(s,dest);
 printf("%s\n",s);
 return 0;
}

在代码中
int a;
int a=100;
//是可以编译通过,并运行的.

char buf[3]="abc";//数组越界

const基础知识

const int a;
int const b;//这两句定义是一样的,代表常量

const char *c;//定义一个指针,这个指针指向一个常量
char * const d;//定义一个常量指针.
const char * const e;//定义一个常量指针,并且指向一个常量.

2017/03/06学习笔记