0032 字符串指针
2015-07-17 10:17
253 查看
/* 字符串指针: 定义: char *字符串指针变量名 = "字符串内容"; 用作:用来保存一个字符串 */ #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char * argv[]) { //"zfbanzhang zaiyiqi" 这个字符串存储在常量去 //str 只保存了字符串常量的首地址 char *str = "zfbanzhang zaiyiqi"; //指针变量都是占用8个字节 printf("sizeof(str) = %ld\n",sizeof(str)); printf("str len = %ld\n",strlen(str)); //str是指针变量 //str重新指向另外一个字符串常量 "I LOVE YOU" //保存的是 "I LOVE YOU" 字符串常量的首地址 str = "I LOVE YOU"; printf("%s\n",str); char ch[]="abc"; //存在栈区 ch[2]='Z'; printf("%s\n",ch); //读取字符串常量的某个字符 printf("%c\n",*(str+2)); //L for (int i=0; i<strlen(str); i++) { printf("%c\t",*(str+i)); } // //*(str+2)='X'; 错误的,因为字符串常量是在常量区存储 //在常量区保存的数据都是只读的 //str2 没有赋初值,野指针 char *str2=NULL; //这句话的作用给先申请了100个字节的内存 str2 str2 = malloc(100); printf("=======%s\n",str2); //另外一种解决方案 char ch3[100]; char *str3=ch3; scanf("%s",str3); printf("----->%s\n",str3); return 0; }
/* 一维字符数组 char ch[10]={'a','b'}; char ch1[]="abc"; 二维字符数组 char ch2[3][10]={{'a','b'},{'b'},{'c'}}; 用二维数组来保存多个字符串 //用二维的字符数组可以存储多个字符串 //第一维存的是每个字符串的首地址 //每个字符串的长度,不能超过第二维长度 char ch3[3][5]={"abc","def","kkkk"} a b c \0 \0 d e f \0 \0 k k k k \0 ch[1][3] = 'Z'; */ #include <stdio.h> int main(int argc, const char * argv[]) { char ch3[3][5]={"abc","def","kkkk"}; //存放的是一个二维数组 ch3[1][3] = 'Z'; for (int i=0; i<3; i++) { printf("%s\n",ch3[i]); } return 0; }
// // main.c // 18、char型指针数组和字符数组区别 // // Created by apple on 15/1/8. // Copyright (c) 2015年 itcast. All rights reserved. // #include <stdio.h> int main(int argc, const char * argv[]) { //char 类型的指针数组 char *name[3]={"abcdasfadsfasdfasdfasdf","def","kkk"}; for (int i=0; i<3; i++) { //name[i] printf("%s\n",*(name+i)); } //字符串指针和字符数组的区别 //字符串指针: char *ss = "abc"; //指向可以改变 //ss是一个指针变量 ss = "helloWorld!"; //字符数组: char s1[]="abc"; //s1是数组名,是一个常量,不能被复制 //s1 = "helloworld!"; return 0; }
// // main.c // 19-应用:字符串排序 // // Created by apple on 15/1/8. // Copyright (c) 2015年 itcast. All rights reserved. // #include <stdio.h> #include <string.h> /** * 实现字符串的排序 * * @param arr <#arr description#> * @param len <#len description#> */ void sortString(char *arr[],int len){ //冒泡排序 //临时存放地址 char *temp; for (int i=0; i<len-1; i++) { for (int j=0; j<len-i-1; j++) { //arr[j] arr[j+1] //比较字符串大小 if (strcmp(arr[j], arr[j+1])>0) { //实现arr[j] arr[j+1]交换 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } int main(int argc, const char * argv[]) { //输入5个国名并按字母顺序排列后输出。 char *name[]={ "CHINA","AMERICA","AUSTRALIA","FRANCE","GERMAN"}; for (int i=0; i<5; i++) { printf("%s\n",name[i]); } //字符串排序 sortString(name, 5); printf("\n\n"); for (int i=0; i<5; i++) { printf("%s\n",name[i]); } int a[2][3]={1,2,3,4,5,6}; //p->0x01 1 // 0x02 2 // 0x03 3 // 0x04 4 // a = &a[0] = &a[0][0] return 0; }
相关文章推荐
- Math类的用法
- Android APK 手动命令编译、打包、签名步骤
- matlab7.0安装问题解决
- eclipse快捷键
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLi
- 梯度下降法
- TCP通信的三次握手和四次撒手的详细流程(顿悟)
- 利用ROW_NUMBER中的partition by 删除重复Key的数据
- Spring MVC 学习笔记 spring mvc Schema-based configuration
- LAMP/LNMP搭建好后输入本地网址返回PHP文件的代码
- android 自定义控件 总结
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现
- CodeForces 492A Vanya and Cubes
- 用 query 方法 获得xml 节点的值
- HTML实体符号代码速查表
- 【VMCloud云平台】SCSM(十)服务请求到资源落地
- iOS 字符串操作(全)
- 马太效应(Matthew Effect)
- C++中,结构体与类的 sizeof 大小
- 七项全能你都会了吗?