代码区 代码
栈 参数,局部变量
全局变量 全局变量 可读,可写
常量区 常量区 可读,不可写
常量字符串的拷贝:
void Function() { char* x = "china"; char y[] = "china"; *(x+1) = 'A'; y[1] = 'A'; }
char* x = “china” 不拷贝 china为常量 x存储的为当前常量的地址 但char y[]="china"要几个就从常量区拷贝到堆栈里 *(x+1) = ‘A’失败
!!!!!!!!!!!!!
指针函数:就是一个函数 因为返回值是个*类型
!!!!!!!!!!!!!!!!!!!!
指针数组:实质就是一个数组,存的是带*的数组 即用指针表示的数组
遍历所有数据?
for(int i=0;i<5;i++) { printf("%c\n",*(arr[i])); }
1、int strlen (char* s)
返回值是字符串s的长度。不包括结束符'/0'。
int strlen (char* s) { int len = 0; while(*(s) != 0) { len++; s++; } return len; }
2、char* strcpy (char* dest, char* src);
复制字符串src到dest中。返回指针为dest的值。
char* strcpy (char* dest,char* src) { while((*(dest++)=*(src++))!=0); //while(*(dest++)=*(src++)) return dest; } /*while(*src) { *dest = *src; dest++; src++; }
*/
3、char* strcat (char* dest, char* src);
将字符串src添加到dest尾部。返回指针为dest的值。
char* strcat (char* dest, char* src) { while(*dest != '\0') dest++; while((*dest++ = *src++)!='\0'); return dest; }
4、int strcmp ( char* s1, char* s2);
一样返回0 不一样返回1
int strcmp(char* s1, char* s2) { while(*s1 != '\0' && *s2 != '\0') { if(*s1 != *s2) return 1; s1++; s2++; } if(*s1 == '\0' && *s2 == '\0') return 0; else return 1; }