首页 > 编程语言 >【c&c++】C语言 char*和char[]用法

【c&c++】C语言 char*和char[]用法

时间:2023-04-06 09:44:05浏览次数:34  
标签:buf1 buf2 c++ C语言 char printf size 指针

char []定义的是一个字符数组,注意强调是数组。
char * 定义的是一个字符串指针,注意强调是指针。
char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:

当char *s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。

当用char s[]=“hello”;后,完全可以使用s[0]=‘a’;进行赋值,这是常规的数组操作。
若定义:

char s[] = "hello";
char *p = s;

也可以使用p[0] = ‘a’;因为这是p ==s,都是指向数组的指针。

char *s = (char *)malloc(n);//其中n为要开辟空间的大小

相当于

char s[n];
#include <stdio.h>
int main(int argc, char* argv[]) {
    char* buf1 = "abcd1234";
    char buf2[] = "abcd1234";
    printf("size of buf1: %d\n", sizeof(buf1));
    printf("size of buf2: %d\n", sizeof(buf2));
    printf("长度为:%d  %d\n", strlen(buf1), strlen(buf2));
return 0;

size of buf1: 4
size of buf2: 9
长度为:8 8

 

标签:buf1,buf2,c++,C语言,char,printf,size,指针
From: https://www.cnblogs.com/opensmarty/p/17291686.html

相关文章

  • C/C++ 占位符总结
    ......
  • C语言概述
    C语言概述简单的C程序示例#include<stdio.h>intmain(){ intnum;//声明 num=2; printf("这是第%d章。",num); return0;}这是一个简单的C程序其输出:这是第2章。概要#include<stdio.h>意为包含stdio.h文件输入/输出头文件,把stdio.h文件所以内容都输入该行所在位置。......
  • C#调用C++ 平台调用P/Invoke 字符串【三】
    Gitp-invoke源码地址 C#调用C++平台调用P/Invoke调用约定【一】C#调用C++平台调用P/Invoke函数指针/回调函数【二】C#调用C++平台调用P/Invoke字符串【三】C#调用C++平台调用P/Invoke错误码LastError【四】C#调用C++平台调用P/Invoke结构体--输入输出参数、返回值、返......
  • C#调用C++ 平台调用P/Invoke 函数指针/回调函数【二】
    Gitp-invoke源码地址 C#调用C++平台调用P/Invoke调用约定【一】C#调用C++平台调用P/Invoke函数指针/回调函数【二】C#调用C++平台调用P/Invoke字符串【三】C#调用C++平台调用P/Invoke错误码LastError【四】C#调用C++平台调用P/Invoke结构体--输入输出参数、返回值、返......
  • C++/CLI 托管C++的数组介绍【4】
    Git源码地址 C++/CLI托管C++的托管与非托管字符串的相互转换【1】C++/CLI托管C++的数据类型介绍【2】C++/CLI托管C++的基本数据类型及函数【3】C++/CLI托管C++的数组介绍【4】C++/CLI托管C++之字符串封装【5】C++/CLI托管C++之enum枚举封装【6】C++/CLI托管C++之类、属性......
  • pycharm创建文件时自动生成注释
    参考:https://blog.csdn.net/weixin_52696285/article/details/128498933 File----Settings-----FileandCodeTemplates-----PythonScript写入如下模板:'''@Project:${PROJECT_NAME}@File:${NAME}.py@IDE:${PRODUCT_NAME}@Author:雨薇@Date:${D......
  • C++逆向分析——this指针
    this指针概述C++是对C的拓展,C原有的语法C++都支持,并在此基础上拓展了一些语法:封装、继承、多态、模板等等。C++拓展新的语法是为了让使用更加方便、高效,这样就需要编译器多做了很多事情,接下来我们就需要一一学习这些概念。封装之前我们学习过结构体这个概念,那么结构体可以......
  • c++ std::string_view
    std::string_view系C++17标准发布后新增的内容。C++17中我们可以使用std::string_view来获取一个字符串的视图,字符串视图并不真正的创建或者拷贝字符串,而只是拥有一个字符串的查看功能。std::string_view比std::string的性能要高很多,因为每个std::string都独自拥有一份字符串的拷......
  • C语言习题 折半查找
     ProblemF:C语言习题折半查找TimeLimit:1Sec  MemoryLimit:128MBSubmit:5189  Solved:2102[Submit][Status][WebBoard]Description有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输......
  • c++ struct和class
    c++中对象通常用struct和class表示。在c语言中,struct用来创建结构体,结构体中只能包含基本数据成员。而在c++中struct能包含成员函数,能实现多态(继承)。c++中struct和class的功能十分类似,但是在面向对象的过程中class的使用较多,两者的区别如下:struct与class的主要区别在于默认......