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;//定义一个常量指针,并且指向一个常量.
时间: 2024-12-10 07:18:37