首页 > 其他分享 >3.3 C提高 指针 字符串

3.3 C提高 指针 字符串

时间:2023-03-03 15:55:05浏览次数:59  
标签:tmp 内存 len char 3.3 字符串 NULL buf 指针

扩展

1.指针变量和它指向的内存块是两个不同的概念
image
指针(本身也有东西)~内容

点击查看代码
注意
//写内存时,一定要确保内存可写
	char *buf2 = "sadgkdsjlgjlsdk"; //文字常量区,内存不可改
	//buf2[2] = '1'; //err

	char buf3[] = "skgjkdsjgjds";
	buf3[1] = '1'; //ok

	char *p3 = NULL;
	//给p3指向的内存区域拷贝内存
	p3 = buf3;
	strcpy(p3, "1111"); //OK
2 不断改变指针指向

实参
image
形参

image

4.指针做参数输入输出特性

输入 主调函数分配内存
输出 输出,被调用函数分配内存,地址传递

点击查看代码
void fun3(char **p /* out */, int *len)
{
	if (p == NULL)
	{
		return;
	}

	char *tmp = (char *)malloc(100);
	if (tmp == NULL)
	{
		return;
	}
	strcpy(tmp, "adlsgjldsk");

	//间接赋值
	*p = tmp;
	*len = strlen(tmp);


}
	//输入,主调函数分配内存
	char buf[100] = { 0 };
	fun(buf);
	printf("buf  = %s\n", buf);

	char *str = NULL;
	fun2(str);

	//输出,被调用函数分配内存,地址传递
	char *p = NULL;
	int len = 0;
	fun3(&p, &len);
	if (p != NULL)
	{
		printf("p = %s, len = %d\n", p, len);
	}

5.字符串的初始化 1.不指定长度, 没有0结束符,有多少个元素就有多长
char buf[] = { 'a', 'b', 'c' };

2.指定长度,后面没有赋值的元素,自动补0

char buf2[100] = { 'a', 'b', 'c' };

3.这里的0=\0 转义字符

char buf6[50] = { '1', 'a', 'b', 0, '7' };
4.长度计算
//strlen: 测字符串长度,不包含数字0,字符'\0'
//sizeof:测数组长度,包含数字0,字符'\0'

标签:tmp,内存,len,char,3.3,字符串,NULL,buf,指针
From: https://www.cnblogs.com/Agtw/p/17175881.html

相关文章

  • 指针与数组、多级指针
    指针和数组:数组名: 【数组名是地址常量】---不可以被赋值。 ++/--/+=/-=/%=//=(带有副作用的运算符) 指针是变量。可以用数组名给指针赋值。++--......
  • 2023.3.3每日总结
    <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/......
  • 如何从字符串末尾删除子字符串?
    我有以下代码:url='abcdc.com'print(url.strip('.com'))我期望:abcdc我有:abcd现在我做url.rsplit('.com',1)有没有更好的办法?请参阅.strip/.rstrip/.l......
  • 如何用许多字符串值初始化字符串列表 (List<string>)
    如何初始化(使用C#初始化程序)字符串列表?我试过下面的例子,但它不起作用。List<string>optionList=newList<string>{"AdditionalCardPersonAddressType","A......
  • PHP 常见字符串函数
    1、字符串格式化1、trim():删除字符串两端的空格或其他预定义字符2、rtrim():删除字符串右边的空格或其他预定义字符3、ltrim():删除字符串左边的空格或其他预定义......
  • 去字符串前后空格
    //202210CJS如果不存在trim函数(部分IE),则手动追加属性if(typeofString.prototype.trim==='undefined'){String.prototype.trim=function(){......
  • json字符串转Map集合
    /***json字符串转list*@paramjsonStr*@return*/publicstaticList<Map<String,Object>>GetJsonListByString(StringjsonStr){List<Map<String,Obje......
  • Json数组形式的字符串转为Map数组 Map集合的几种遍历方式
    //Json数组形式的字符串转为Map数组StringstrArr="[{"name":"xx","age":"16"},{"name":"yy","age":"18"}]";//第一种方式List<Map<String,String>......
  • 2023.3.2每日总结
    Android中数据库的创建•数据库类:SQLiteDatabase•数据库帮助类:SQLiteOpenHelper方法一•db=SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRI......
  • 使用qsort函数实现冒泡排序(函数指针的运用)
    //此程序的本质:完全理解qsort函数的传参的原则////实现思路:因为我们是模拟qsort函数//所以我们要自己创造一个:比较数据的函数:cmp_int//因此必须有一个函数指针来接收这......