字符型指针与字符串常量

字符串常量在编译时系统给定存储位置,可以赋值给字符指针;此时可以通过下标进行访问,但不可以通过下标修改字符串的值。

字符指针指向字符数组时可以修改字符串的值。

#include <stdio.h>
#include <string.h>
 int main()
{
    char a[26];
    char *b = "abc";   //定义时初始化
    b="123";           //可以被重新赋值
    //b[1] = ‘v‘;      //不可以被修改
    a[1] = b[1];       //可以通过下标读取
    strcpy(a, "catdog");
    strcat(a, "!");
    b = a;           //指向字符数组
    b[0] = ‘x‘;      //可以被修改
    b[1] = "x";      //实际上将字符常量"x"的地址付给b[1],字符串将出现乱码
    printf("%s\n", a);
    system("pause");
    return 0;
}

原文地址:https://www.cnblogs.com/imhuanxi/p/11610013.html

时间: 2024-10-11 01:21:21

字符型指针与字符串常量的相关文章

C++中cout输出字符型指针地址值的方法

#include<iostream> #include<string> using namespace std; int main(){ char c[3]={'a','b','c'}; char *p=c; cout<<*p<<' '<<(void*)p<<endl; cout<<*(p+1)<<' '<<static_cast<void*>(p+1)<<endl; cou

关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存

#include <stdio.h> #include <iostream> #include<math.h> using namespace std; int main() { //声明字符型数组和指针变量 char str[10]; char *strip=str; //输入输出 cout<<"str="; cin>>str; //用字符数组输入字符串 cout<<"str="<<

指针和字符串常量

指针和字符串常量 首先比较两段代码 代码1 char ch1[] = "hello"; *ch1 = 'H'; //OK ch1[0] = 'H'; //OK printf("%s\r\n",ch1); 代码2 char *ch2 = "world"; *ch2 = 'W'; //运行时错误 ch2[0] = 'W'; //运行时错误 printf("%s\r\n",ch2); 这里的"world"是字符串

字符数组,字符指针,字符串常量,以及sizeof的一些总结

1.以字符串形式出现的,编译器都会为该字符串自动添加一个\0作为结尾 如在代码中写"abc",编译器帮你存储的是"abc\0". 2.数组的类型是由该数组所存放的东西的类型以及数组本身的大小决定的,如char s1[3]和char s2[4],s1的类型就是char[3],s2的类型就是char[4] 字符串常量的类型可以理解为相应字符常量数组的类型,如"abc"的类型可以看成是const char[4] 3.字符数组和指针的区别 (1)把&qu

字符型指针为什么不能修改单个字符?

char *p="hello"; *p='k'; //编译能通过,但是运行到这里会出错 因为p指向的是一个字符串常量. 所以运行时发现要改常量区就会报错. 改成: char* p = (char*)malloc(6); strcpy(p,"hello"); *p='k'; .... free(p);

C++中cout输出字符串和字符串型指针地址值的方法以及C语言中的printf用法比较

#include <iostream> using namespace std; #include <stdio.h> int main() { char *pstr = "china"; char *qstr = "america"; char *q = "adf"; char * s; s = "hello"; printf("pstr = %p\n", pstr); /*输出为

指针与字符串实例练习

在C语言中,字符串是存放在字符数组中的,字符串的引用如下: char string[] ="I love China!";//定义字符数组string printf("%s\n",string);//输出整个字符串 printf("%c\n",string[7]);//输出第七个元素 该字符串长度是14,最后一个字节存放字符串结束符'\0'. 例1:通过字符指针变量输出一个字符串. 1 int main() 2 { 3 char *string=

C语言中字符串常量到底存在哪了?

常量存储总结局部变量.静态局部变量.全局变量.全局静态变量.字符串常量以及动态申请的内存区 1.局部变量存储在栈中2.全局变量.静态变量(全局和局部静态变量)存储在静态存储区3.new申请的内存是在堆中4.字符串常量也是存储在静态存储区 补充说明:1.栈中的变量内存会随着定义所在区间的结束自动释放:而对于堆,需要手动free,否则它就一直存在,直到程序结束:2.对于静态存储区,其中的变量常量在程序运行期间会一直存在,不会释放,且变量常量在其中只有一份拷贝,不会出现相同的变量和常量的不同拷贝. =

c++输出char型变量与字符串的地址

在c里面如果指针是一个基本数值型 int ,foalt ,long等,如果输出里有 cout << ptr << endl; 其中ptr是指针的名,则输出的值是指针的地址, 如果是char * (char指针) 则输出的是char指针的值. 在C++中,熟悉int和char型的变量是最基本不过的了,不过,我想,很多初学者会跟我一样,搞不懂如何输出一个char变量的地址?就举下面一个例子: int i=97; char c='a'; cout<<"line 1: