c语言指针字符串与字符数组字符串的区别

#include <stdio.h>

int main()
{
    //字符串常量,存放于内存常量区。
    //常量区区的内存具有缓存机制,
    //当不同指针指向的常量值相同时,
    //其实这些指针指向的是同一块常量区内存
    //且常量区内存不允许被程序修改
    char *str1 = "hello";
    char *str2 = "hello";

    //报错
//    *(str1+2)=‘A‘;

    printf("str1 = %p\n",str1);
    printf("str2 = %p\n",str2);

    //字符串变量存放于栈内存中,
    //不同字符数组指向的字符串值相同,
    //也是保存在两块不相同的内存中
    //且栈内存允许被程序修改
    char str3[] = "hello";
    char str4[] = "hello";

    //不报错
//    str3[2]=‘A‘;

    printf("str3 = %p\n",str3);
    printf("str4 = %p\n",str4);

    return 0;
}

结果:

时间: 2024-12-14 18:11:13

c语言指针字符串与字符数组字符串的区别的相关文章

字符串指针变量与字符数组的区别

使用字符串指针变量与字符数组的区别 (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址.(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同.例如: char str[ ] ="I am a student ! " ,s[200]; char *pc="You

字符 字符串 字符数组 字符串指针 指针数组

一.字符串指针.字符数组 1. 字符串指针:字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. char *ps="C Language"; 可以写为: char *ps;  #ps字符串指针,是指针,是一个变量, ps="C Language"; #ps为字符串的首地址,利用ps++可遍历字符串,字符串存储在以ps为开始地址的地段连续的内存空间中,并以'\0'作为字符串的结束.

字符串和字符数组

  1.字符串 严格意义上来说,C语言并没有字符串原生的字符串的类型,而是通过字符指针来实现的:char *p = "LINUX";.而对于其他的高级语言来说,比如C++的就存在字符串类型: string p1 = "I LOVE LINUX"; . 字符串在内存中其实就多个字节组成的,且地址都是连续的:指针指向字符串的的头部:字符串的结尾是以"\0"(是真能整的零)作为字符串结束的标志. "\0" 的理解: \0 是一个 A

C类型字符串和字符数组的区别

1.字符串和字符数组的区别,字符数组和普通数组一样,里面的每个元素是一个个的字符,字符串是存在字符数组中的,字符串的结尾处补上了“\0”截止符. 定义过字符串后,得到的是字符数组的首元素的指针,在结尾处加入截止符,可以方便的访问字符串中的任何一个元素.C类型的字符串是存在字符数组中的,在字符串的结尾处补上"\0",这个结尾符是用来标志字符串结尾的,它的作用是const * p; //p是一个常量指针 2.数组名和指针的区别 int a [20]; int *p =a; (1)数组名的内

比较C/C++和Delphi中的字符串和字符数组(数组和动态分配内存的情况)

本文所讲解的只是从其中一个方面来看待进行的总结,所以有必要结合<Delphi字符串与字符数组之间的转换(初始化的重要性)>等文章进行更全面的了解,会从更多方面来理解字符串.内存.类型转换 C/C++中的字符串.字符数组.字符指针分配的内存空间 我们知道在C/C++中,我们可以这样理解字符串和字符数组 1)字符串,就是一个以 '\0' 结尾的字符数组 2)字符数组,包括字符串,但是不一定要以 '\0' 结尾,如果不是以'\0' 结尾,那么就不能当做字符串使用 在C/C++中,使用字符串可以通过数

1.7 字符串和字符数组的转换

package Demo; public class Demo2 { public static void main(String[] args) {  String str = "helloworld";  char c[] = str.toCharArray(); //字符串转换为字符数组  for(int x=0;x<c.length;x++){   System.out.println(c[x]+".");   } /*h.  e.  l.  l.  

编程题:字符串与字符数组的输入方法。

#include<stdio.h> void main() {char str1[6],str2[10]; int i; for(i=0;i<5;i++) scanf("%c",&str1[i]); str1[5]='\0'; scanf("%s",str2); printf("%s\n%s\n",str1,str2); } 编程题:字符串与字符数组的输入方法.,布布扣,bubuko.com

【C#】字符串与字符数组

字符串与字符数组的相互转换. 字符串转换成字符数组: string ss="abcdefg"; char[] cc=ss.ToCharArray(); 字符数组转换成字符串: //char [] cc 定义同前段代码 string s=new string(cc);

字符串和字符数组之间的转换

package String; /* * 写了一个字符串和字符数组之间转换的例子 * 总结:将字符串转变为字符数组 :public char[] toCharArray() * 直接将一个字符数组变成一个字符串 public String (char[] value) 这个是构造函数啊,可以直接new 并为属性赋值啊. */ public class StringDemo2 { public static void main(String[] args) { String s = "hellow