c语言学习笔记 - 指针和字符串
前面学习了字符串是一种字符数组,又知道了指针变量和数组的关系,这里来看一下指针和字符串的关系。
#include <stdio.h>
int main(void){
char str = "hello";
char *ptr = "abcd"; // 这里定义ptr为 char类型的指针, ptr的地址会指向这个字符串的首个字符, 。
int i;
for(i=0;i<4;i++){ //
printf("%c",ptr[i]); // 或 *(p+i)
}
printf("%s",ptr);
return 0;
}
//再看一个例子,用指针来计算一个字符串的长度
#include <stdio.h>
//用指针求字符串长度
size_t str_len(const char *p){ //这里的size_t 是 size type ,一种整数类型,这里直接用 int代替size_t当然也许,但是用这样一种特殊的int会使代码更好阅读,因为既知道了数据类型又知道了数据的作用
//这里要注意,函数通过指针进行操作时,应该避免该函数对指向空间的非必要操作,适当的加上 const,程序不是仅仅实现了功能就行了
size_t i=0;
while(*p++)
i++;
return size_t;
}
int main(void){
char str1[]="hello world";
int len=0;
len=str_len(str1);//前面看到这个str_len函数的形参是 char *p ,这里传递的实参是 str1, 说明这种指针参数传递会有一个转换过程,这里是把str1的首字符的地址传了进来
printf("%d",len);
return 0;
}
//用指针实现字符串的复制
#include <stdio.h>
char str_copy(char *p,const char *d){
while(*p++=*d++) //这种写法会先赋值后再自增,
;
}
int main(void){
char str1[]="hello";
char str2[]="world"; //如果不指明下标,编译的时候会根据字符数分配空间
str_copy(str1,str2);
printf("%s",str1); //str1会变成world,表面上看对了,但还是有疑问,由于前面定义字符串赋值没有给下标,当str2的字符数多于str1的字符数,用这种指针操作可能在str1原来的内存空间范围外赋值,可能会覆盖其他的数据
return 0;
}
很多函数其实已经封装好了,可以拿来直接用
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//常用字符串 函数
int main(void){
char str1[]="hello";
char str2[]="world";
char str3[]="goodidea";
printf("%d",strlen(str1)); // strlen 求字符串长度
strcpy(str1,str2);
printf("%s \n",strcpy(str1,str2)); //strcpy 把一个字符串接到另一个字符串后面
printf("%s \n",strncpy(str1,str3,2)); //strncpy 同上,从n位开始操作
char str5[]="ni ";
char str6[]="hao";
printf("%s \n", strcat(str5,str6)) ;
char str7[]="123";
printf("%d \n", atoi(str7)) ; // alphanumeric to integer
char str8[]="123";
printf("%d \n", atol(str8)) ; //alphanumeric to long
char str9[]="12.31";
printf("%d \n", atof(str9)) ; //alphanumeric to float
return 0;
}
c语言学习笔记 - 指针和字符串的更多相关文章
- C语言学习笔记--指针与字符串
字符类型 char(character)是一种整数,也是一种特殊的类型:字符.这是因为 ① 用单引号表示的字符字符字面量:‘a’,'1' ②‘’也是一个字符 ③printf和scanf里用%c来输入. ...
- c语言学习笔记 - 指针和数组
结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 字符串
C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持.字符串实际上是使用 null 字符 ...
- c语言学习笔记.指针.
指针: 一个变量,其值为另一个变量的地址,即,内存位置的直接地址. 声明: int *ptr; /* 一个整型的指针,指针指向的类型是整型 */ double *ptr; /* 一个 double 型 ...
- C语言学习笔记--指针阅读技巧
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...
- C语言学习笔记--指针和数组的关系
1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译 ...
- C语言学习笔记--指针概念
指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
随机推荐
- DRF的三大认证组件
目录 DRF的三大认证组件 认证组件 工作原理 实现 权限组件 工作原理 实现 频率组件 工作原理 实现 三种组件的配置 DRF的三大认证组件 认证组件 工作原理 首先,认证组件是基于BaseAuth ...
- uoj33 【UR #2】树上GCD
题目 大致是长剖+\(\rm dsu\ on\ tree\)的思想 先做一个转化,改为对于\(i\in[1,n-1]\)求出有多少个\(f(u,v)\)满足\(i|f(u,v)\),这样我们最后再做一 ...
- MySQL 08章_数据库设计
一. 关系模型与对象模型之间的对应关系 序号 关系模型:数据库 对象模型:java程序 1 数据表table 实体entity:特殊的java类 2 字段field 属性attribute/字段fie ...
- 2019-7-27-解决从旧格式的-csproj-迁移到新格式的-csproj-格式-AssemblyInfo-文件值重复问题...
title author date CreateTime categories 解决从旧格式的 csproj 迁移到新格式的 csproj 格式 AssemblyInfo 文件值重复问题 lindex ...
- HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
当我们使用HttpWebRequest发送请求的时候如果服务器返回的不是200状态,那么请求代码肯定会异常,其实请求和返回并没有什么异常,只是.net内部就认定了 返回的不要是200 就是异常 那么我 ...
- FCC知识点总结
1.DOMContentLoaded事件 2.延迟脚本 defer 3.异步脚本async 4.[找最长单词]—— 找出句子中最长的单词,并返回它的长度. 5.数组slice().splice() s ...
- postman报InvalidArgumentException
解决方案:
- csv文件格式
弱渣今天第一次读Kaggle入门文章,知道train data,test data以及提供的result文件大都是以csv文件格式给出的. csv,全称 Comma-Separated Values, ...
- AutoMapper 在你的项目里飞一会儿
先说说DTO DTO是个什么东东? DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已. 为什么要用DTO? 1.DTO更注重数据,对领域对 ...
- 树链剖分(模板) 洛谷P3384
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...