指针-c语言中字符数组初始化问题

问题描述

c语言中字符数组初始化问题
字符数组初始化
1:
char str[]=""123"";//不报错
2:
char str[4];
str=""123"";//不能将const char[4] to char[4]
字符指针初始化
1:
char *str=""123"";//不报错
2:
char *str;
str=""123"";//不报错
求大神解释这是为什么

解决方案

我来解释一下:
数组初始化
1、char str[]=""123"";//不报错
原因是,这样的写法,实际上str是一个指针变量,str指向了“123”数据段。
等效于char *str=""123"";
char *str;
str=""123"";
这个很好理解了,对一个指针变量赋“123”数据段的首地址。
2、char str[4];
str=""123"";//不能将const char[4] to char[4]字符指针初始化
这个是错误的,表面上的意义是str是一个数组,str变量则是这个数组的首地址,等效于&str[0],因此这样赋值是非法的。

解决方案二:
123是内存里而char *str是指针,指向。char str[]=?是初始化,这样编译 for(i=0;i<string.length;i++)str[i]=string[i]
char str[4],str已经固定不能变,他是const,str是const不能指向别char char *str是指针可以到内存123

解决方案三:
你知道123正好是4个字符,能装在str[4]中,编译器并不知道这一点。它统统不让定义了长度的数组接受一个字符串。

解决方案四:
char str[4];
str=""123"";//不能将const char[4] to char[4] 是因为 str 被认为是常量型指针,所以不能修改它。
字符指针初始化

解决方案五:
不太明白你的问题,这些操作都没问题啊

时间: 2025-01-15 19:06:02

指针-c语言中字符数组初始化问题的相关文章

c语言中字符数组系统初始化为什么?

问题描述 c语言中字符数组系统初始化为什么? c语言中声明一个字符数组,如果自己没有初始化,那系统初始化为什么?是被初始化为空字符吗?我的实验结果好像是空字符 解决方案 在debug调试下,vc会将它初始化为0xcc 0xcc...,也就是"烫烫烫烫...",release运行的时候,vc++不会初始化,内容随机,但是很大可能是0,因为只有在堆内存被重新分配的时候,才可能出现其他值. 其它编译器不好说. 解决方案二: C语言字符数组的初始化C语言字符数组的初始化

c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

问题描述 c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求 #include #include int main() { char*s; scanf("%s",s); //printf("%sn",s); //int n = strlen(s); //printf("%dn",n); char ret[56]; return 0; } 解决方案 s只是指针变量,没有分配内存 char*s; s = mall

C语言中的数组和指针汇编代码分析实例

  这篇文章主要介绍了C语言中的数组和指针汇编代码分析实例,本文用一则C语言例子来得到对应的汇编代码,并一一注解每句汇编代码的含义,需要的朋友可以参考下 今天看<程序员面试宝典>时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题.本文只是为初学者,大牛可以飘过~ C源代码如下: 代码如下: #include "stdafx.h" int

浅析C语言中的数组及字符数组_C 语言

我们来编写一个程序,以统计各个数字.空白符(包括空格符.制表符及换行符)以及所有其它字符出现的次数.这个程序的实用意义并不大,但我们可以通过该程序讨论 C 语言多方面的问题. 所有的输入字符可以分成 12 类,因此可以用一个数组存放各个数字出现的次数,这样比使用 10 个独立的变量更方便.下面是该程序的一种版本: #include <stdio.h> /* count digits, white space, others */ main() { int c, i, nwhite, nothe

c语言-如何在C语言中以数组指针作为形参输出数组

问题描述 如何在C语言中以数组指针作为形参输出数组 #include ""stdafx.h""void cmdsend(unsigned int * info);int main(){ unsigned int senddata[5]; senddata[0] = 8; senddata[1] = 2; senddata[2] = 0; senddata[3] = 4; senddata[4] = 5; cmdsend( senddata ); while(1){;

C语言中全局数组和局部数组的问题

 今天同学遇到一个在C语言中全局数组和局部数组的问题,卡了许久,我也没有第一时间看出问题,现在把问题梳理一下,并给出解决方案. 问题描述: 在全局声明的数组与在局部声明的数组有着不同的效果. 首先来看一个程序: 代码如下: #include <stdio.h> #include <stdlib.h> #define MAX 10 char a[MAX]; int main() { int i; char b[MAX]; char *c=(char *)malloc(MAX * si

C语言中全局数组和局部数组的问题_C 语言

今天同学遇到一个在C语言中全局数组和局部数组的问题,卡了许久,我也没有第一时间看出问题,现在把问题梳理一下,并给出解决方案. 问题描述: 在全局声明的数组与在局部声明的数组有着不同的效果. 首先来看一个程序: 复制代码 代码如下: #include <stdio.h> #include <stdlib.h> #define MAX 10 char a[MAX]; int main() { int i; char b[MAX]; char *c=(char *)malloc(MAX

c++-C++中字符数组转 string类引用问题

问题描述 C++中字符数组转 string类引用问题 函数定义: void fun(const string &s){ cout<<s<<endl; } 如果调用fun("hello"),可以正确编译.但是如果把函数定义中的const去掉,则不能正确编译. 问字符数组"hello"是通过什么方式装换成const string &类型的,是某种强制转换吗? 我再C++ primer里没找到相关说明,如有知道的说明下哪本书,那页有

c-C语言中函数数组调用问题

问题描述 C语言中函数数组调用问题 5C 定义的二维数组为全局变量,在主函数中有多个子函数要用到它.请问下大家,子函数中计算的此二维数组的值间能传递么?还是也需要调用呢?~~ 解决方案 可以传引用或者指针,或者定义为全局变量.那就直接用不用传了. 解决方案二: 传递数组地址或指针,C中没有引用 解决方案三: 你用全局变量,每个函数里面都可以改啊. 解决方案四: 全局的直接访问就行了,就是要注意不要把里面的数据乱改,导致读取出问题 解决方案五: 你使用全局变量,每个函数都可以去访问它并且修改它,会