c语言-C语言中的指针和数组的初始化

问题描述

C语言中的指针和数组的初始化
char a[]=""abcdef"";
char *p =""cdefg"";
a[1]='A';
p[1]='A';

这段代码有什么问题?
#include
int main()
{
char amessage[]=""now is the time"";

    char *pmessage = ""now is the time"";     /*字符串常量不能更改*/    amessage[1] = 'A';pmessage[2] = 'B';printf(""%sn""amessage);printf(""%s""pmessage);while(1);

}

为什么会出现这个问题呢?

解决方案

pmessage 指向的 ""now is the time""; 是存贮在常量区的,所以其内容不能修改。

char amessage[] 定义时,编译器为 amessage 分配了空间,然后将字符串复制到其中,这种从 堆栈上 分配来的空间就可以修改。

解决方案二:
在这里, char *pmessage其实是cosnt char *pmessage;就是常量字符串,当然是不能改变了,如果你要改变字符串,你应该这么定义
char pmessage[] = ""now is the time"";

解决方案三:
pmessage 指向的 ""now is the time""; 是存贮在常量区的,所以其内容不能修改。

char amessage[] 定义时,编译器为 amessage 分配了空间,然后将字符串复制到其中,这种从 堆栈上 分配来的空间就可以修改。

解决方案四:
char a[]=""abcdef""; 内容保存在常量区 不能更改
char *p =""cdefg""; 内容保存在栈空间上可以修改

时间: 2024-10-27 02:32:42

c语言-C语言中的指针和数组的初始化的相关文章

c语言-C语言中二级指针修改数组问题。

问题描述 C语言中二级指针修改数组问题. 数组相当于一级指针,我写了一个二级指针被调用.结果它总是宕机,求指导,谢谢. 解决方案 这段程序编译会报错吧:cannot convert parameter 1 from 'char (*)[100]' to 'char **' 可以这样 试试看#include #include #include int getMemBuf(char*& p2){ char* tmp = NULL; tmp = (char*)malloc(100); strcpy(t

C++中的指针、数组指针与指针数组、函数指针与指针函数

C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从初学者的角度,深入浅出地详解什么是指针.如何使用指针.如何定义指针.如何定义数组指针和函数指针,并给出对应的实例演示:接着,区别了数组指针与指针数组.函数指针与指针函数:最后,对最常混淆的引用传递.值传递和指针传递做了区处. C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较

详解C++中的指针、数组指针与函数指针_C 语言

C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较严重的问题. 1.指针 程序中所有的变量和常量都存在一个内存地址中,当然,函数也有对应的内存地址,内存地址的不同会导致程序执行时有所不同. 指针就是用来控制和存储内存地址的变量,它指向单个对象的地址,除了void之外,指针的数据类型与所指向地址的变量数据类型保持一致. 2.如何定义指针.

C语言二分查找法(指针和数组实现)

/* * 编写一个函数,对一个已排序的整数表执行二分查找. * 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值. * 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时,输出一个NULL指针 * 用两个版本实现,一个用的是数组小标,第二个用的是指针 * 他们均采用了不对称边界 * Copyright (c) 2012 LiMing Author: LiMing 2012-06-21 referenced C Traps and Pitfaills Chine

如何用vb.net语言将datagridview中的数据以数组的形式在程序中显示

问题描述 我用vb.net将.csv文件在datagridview中显示出来,现在想把数据用数组的形式显示,怎么编写代码 解决方案 解决方案二:可以将DataGridView单元格的数据赋给一个二维数组,但数组是用来存储数据的,显示就不行了解决方案三:那怎样编写代码,进行赋值呢????解决方案四:DimSum(n,m)asString'n,m即单元格总行.列数-1Fori=0TonForj=0TomSum(i,j)=DataGridView1.Item(j,i).ValueNextNext

C语言 socket 如何发送带指针的结构体?

问题描述 C语言 socket 如何发送带指针的结构体? 发送一个带指针的结构体,我知道怎么发送? 先把结构体转换成字符串,然后发出.但是接收的时候,怎么接收到结构体中?thanks! 解决方案 发送: struct f;char *ffff[sizeof(f)];memcpy(ffff &f sizeof(f)); 接收: struct f; ffff为收到的数据 memcpy(&f ffff sizeof(ffff)); 解决方案二: C语言---结构体指针C语言--结构体中的指针C语

c语言-C语言结构体的指针问题。

问题描述 C语言结构体的指针问题. struct GenInfo { uint64_t (*next)(struct GenInfo * const); enum GeneratorType type; union { struct GenInfo_Constant constant; struct GenInfo_Counter counter; struct GenInfo_Discrete discrete; struct GenInfo_Exponential exponential;

《C语言及程序设计》实践项目——字符数组与字符串处理

返回:贺老师课程教学链接 [项目1-M$pszi$y是嘛意思?]背景:小明让同学传纸条给小丽.小丽接到会心一笑,大家却不知所云.纸条上写着M$pszi$y,两人暗中约定是,真实字符为实际字符前面的第4个!M$pszi$y是神马意思?推算一下,或从ASCII码表中查一下,自然是I love u.(1)小明请你写一个程序,在给小丽写情书时,再不用费功夫自己"翻译",原信中每一个字符加密为其后的第4个字符.例,输入I love u,输出M$pszi$y.(2)小丽请你写一个程序,在看小明的情

指针与数组的区别详解

 指针是C语言的精华,它是一柄"双刃剑",用的好与坏就看使用者的功力了.下面就一道测试题,看一下指针与数组的区别.   char *p1, *p2;char ch[12];char **pp; p1 = ch; pp = &ch; p2 = *pp; 问p1和p2是否相同       题目如上,找出其中的不妥之处.       首先,数组ch是没有初始化的.其次,一个比较隐含的地方是,数组名可以代表数组第一个元素的首地址,这个没有问题,但是,数组名并非一个变量,数组分配 完成后