问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中可以给指针变量赋值常数吗?

发布网友 发布时间:2022-05-16 03:00

我来回答

5个回答

热心网友 时间:2023-10-09 13:50

C语言中可以给指针变量赋值常数。

1、申请了空间(在常量区),存放了字符串

2、在字符串尾加上了'/0'

3、返回地址,这里就是返回的地址赋值给了p

字符串常量"hello"出现在一个表达式中时,"hello"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。所以,可以把字符串赋值给指向字符的指针p,而不能把字符串赋值给一个字符数组。

chara[10]=“hello”;//这样可以,这种情况是c语言初始化所支持的,如果写成chara[10],然后a=“hello”这样就错误了。同样是a数组,chara[10]=“hello”;这种是数组的初始化,和a[0]=‘h’a[1]=‘e’,是一个道理。

换成chara[10],然后a=“hello”就不行了“hello”赋值的值是一个地址,而a虽然也有地址,但是这与指针是不一样的,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。

扩展资料

C语言中给指针变量赋值常数注意事项

在使用指针的时候,指针可以自增,而数组不能自增,编译器给数组分配了空间,数组a的地址就是一个常量了,让常量自增这肯定是不行的。 在指针自增的时候,编译器会自动识别类型,比如指针是指向int型的,想获取下一个的地址时,指针直接p++就行了。

特别需要注意的是,在void指针使用的时候,不能使用指针运算,应为void型编译器不能识别类型的长度(即指针所指对象的体积),p++这样就是不合法的,即不能进行数*算,也不能使用*取值操作,想使用必须转换为其它的类型。

参考资料来源:百度百科—c语言

热心网友 时间:2023-10-09 13:50

C语言中可以给指针变量赋值常数。

如:

char *p,a='5';

p=&a;                    

p="abcd"; 

解析:

P申请了空间(在常量区),存放了字符串,所以最后可以返回地址。

以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写
"abcd",那么编译器帮你存储的是"abcd\0"。

扩展资料

1、定义指针变量的一般形式如下:

类型名*指针变量名1,*指针变量名2,... *指针变量名n ;

2、空指针

空指针是一个特殊的指针,它的值是0,C语言中用符号常量NULL(在stdio.h中定义)表示这个空值,并保证这个值不会是任何变量的地址。空指针对任何指针类型赋值都是合法的。一个指针变量具有空指针值表示当前它没有指向任何有意义的东西。

3、void指针

(void *)类型的指针叫通用指针,可以指向任何的变量,C语言允许直接把任何变量的地址作为指针赋给通用指针。

但是需要注意void*不能指向由const修饰的变量,例如const int test; void * ptv; ptv = &test;第三句是非法的,只有将ptv声明为const void * ptv;,上述第三句ptv = &test才是合法的。

当需要使用通用指针所指的数据参加运算时,需要写出类型强制转换。如通用指针ptv 所指空间的数据是整型数据,p是整型指针,用此式转换:p=(int *)ptv;

参考资料来源:百度百科—指针变量

热心网友 时间:2023-10-09 13:51

C语言中可以给指针变量赋值常数,赋值方法为:

1、首先打开Microsoft Visual C++软件,单击“文件”菜单->“新建”,新建一个文件,文件名后缀为.c。

2、新建好文件后,输入如下内容。

3、然后我们在{  }之间输入函数的内容,我们先定义变量c1,变量的类型为char,字符型。

4、然后,我们用printf语句进行输出。

5、当内容输入好后,我们点击图中工具按钮,对程序进行检测,如果没有错误,会得到下图所示效果(红线画出)。

6、检测到没有错误后,点击运行(红色感叹号),弹出的黑色窗口中为最终结果,可以看到大写字母“A”显示在上面。

热心网友 时间:2023-10-09 13:52

赋值当然可以啊,不能用地址引用

举例:
//int
int * p = new int;
*p = C_INT_1; //这个是可以的,赋值
p= C_INT_1; //这个不可以,地址复制了

//字符串
char * p;
p = "abc"; //字符串这样就可以,因为这个常量编译器自动赋予了空间

热心网友 时间:2023-10-09 13:52

不可以 因为这是不可预见的 如果指到了你内存中的重要消息,电脑可能会出问题啊,所以千万不要赋常数给指针变量
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 C语言如何把指针指向的值赋值到变量上。。。 市政水泥管信息价在哪里发布 魅族mback键怎么使用 魅族mback键使用图文教程 关于javascript对象构造函数的问题 魅族MX4pro使用技巧有哪些 大哥是谁? 葫芦岛 兴城 赵媛媛 我的手机是安卓系统的 经常读不出来SIM卡 求高手解决下 葫芦岛兴城海边欺诈岸找谁? 锦州葫芦岛梅姐是谁 怎么能把我的空间设置访问权限? 葫芦岛游记 辽宁朝阳市黑社会有多少。大哥都是谁。张啥摸样。谁能详细讲下 如果养鸡场因为温控死鸡责任怎么划分你好,我们是养鸡设备厂家,因采购的合作第三方温控箱在夜间突然不工_百度问一问 东北的黑社会大哥都是谁啊? 小鸡是我们人类的什么呢 同一局域网手机输入电脑IP,不能访问页面,教你如何实现互相访问 关于局域网无法访问的问题。 无法访问局域网 葫芦岛市的常岳奇是谁啊,听说此人很有背景 C语言中指针的赋值问题 c语言中,指针能二次赋值咩 c语言指针赋值德问题 请问C语言这个指针要怎么赋值? 形容“夏天蝉鸣”的词语是什么? 暑月蝉鸣的读音 聒噪的造句 阅读《蝉》,回答下面的问题。 怎么分别八种指纹 指纹中的斗型纹是什么样的? 手上的指纹上中下三条分别代表什么 请问指纹的三叉点、嵴纹数、总指嵴数分别是什么意思啊 一个孔雀眼指纹象征什么 西红柿豆皮做法 新办的联通卡为什么无法服务 西红柿炖豆皮的家常做法窍门 西红柿豆皮怎么做? 高温补贴从几月份开始 如何做西红柿炖豆皮 劳动法高温补贴从什么时间开始的