C语言中的字符变量和lingo 整数变量量有啥区别

以下试题来自:
单项选择题以下关于字符串的叙述中正确的是A) C语言中有字符串类型的常量和变量B) 两个字符串中的字符个数相同时才能进行字符串大小的比较C) 可以用关系运算符对字符串的大小进行比较D) 空串一定比空格打头的字符串小
为您推荐的考试题库
你可能感兴趣的试题
1A) 3 B) 4 C) 6 D) 72A) 011 B) lel C) 8.0E0.5 D) 0xabcd34A) C,A,D,B B) B,D,C,A C) C,D,A,B D) 任意顺序5A) 数据模型 B) 数据库管理系统C) 数据库 D) 数据库管理员
热门相关试卷
最新相关试卷如何计算C语言相关问答:123456789101112131415语言中变量有几个字符?
全部答案(共1个回答)
C语言相关问答:
1谁住过贝尔格莱德Mistral Apa
2巴亚尔塔港Villa Yubarta
3墨西哥城Luxury Apartmen
4托雷维耶哈Apartments Ped
5谁住过利沃夫Two-Bedroom a
6罗马Vetrina Apartment
7谁住过默特尔比奇Anchorage I
8布德瓦Apartment Gospos
9伊热夫斯克Apartment Komm
10里约热内卢Ilive034 - 3 B
中的字符变量为什么可以用正整数赋值?要得到正常的字符,条件是什么?若用负整数赋值情况又将如何? 答:C语言中各种类型的变量其实都是内存地址。都可以通用的。其中字符型最是最通用的一种,他是八位二进制的。即一个字节,可以存任何一个字节的变量。如: int a = 0xFF;char *p = &a;A在内存中的样式:低地址高位。则 *p==0*(p+1)==0;这个你明白了吧。字符型可以存任何数据。英文字符实际上是0-127的数字编码存在内存中。我们叫他们ACSII码。电脑在处理这些数据时比如打印:printf,如果用%d就打印他的的十进制ASCII码,而%C就打印字符。若用负整数赋值情况又将如何? 负数实际上会变成正数,如-1==255,当然,你要强制转换成unsigned char型的。下面举个例子:#include int main (int argc, char *argv[]){ char ch = 97; char ch1 = -1; printf("ch = %d\n",ch); printf("ch = %c\n",ch);
printf("ch1 = %d\n",ch1); printf("ch1 = %d\n",(unsigned char)ch1); return 0;}
点一下好评,真心的祝愿你万事如意!
在C中,printf函数的使用格式是:printf(“格式控制字符串”,输出表列)
其中“格式控制字符串”一般形式为: [标志][输出最小宽度][.精度][长度...
printf的返回值就是输出了几个字符
int main(int argc, char *argv[])
问题出在scanf函数,当函数执行完毕时。键盘输入缓冲区中仍然未清空,这应该算是一个bug吧。在使用gets函数时,就会得到上次使用scanf时残留的信息。所以...
同意楼上的说法。一般字符串用字符型数组或字符指针实现。VC++里可以使用srting类型。这个新类型可以方便地实现字符串合并等常用操作。
答: 有人知道密乐玛游轮(Mirimar Boat Cruise)有没有从龙柏考拉园返程到市里的行程
答: 如果你理解能力强考数据库,其中比如关系数据库之类的需要去领悟
如果你记忆能力强考网络,各种各样的名词,背下来就得分。
还有官方指定的教材要有,上机最好做一做南开...
答: 新年好!首先,你必须了解计算机的组成和结构以及操作系统的运作原理,这是基础
如果你想学习开发多线程、WINDOWS应用、动态链接库、WINDOWS组件的话,建议...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415C语言中字符串常量到底存在哪了?
常量存储总结
局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区
1、局部变量存储在栈中
2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区
3、new申请的内存是在堆中
4、字符串常量也是存储在静态存储区
补充说明:
1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结束;
2、对于静态存储区,其中的变量常量在程序运行期间会一直存在,不会释放,且变量常量在其中只有一份拷贝,不会出现相同的变量和常量的不同拷贝。
===============================================
关于字符串常量,下面有篇文章解释的很清晰:
char *c=&zhouming&;
书上说: &zhouming&这个字符串被当作常量而且被放置在此程序的内存静态区。
c为一个字符型指针,若为局部变量,则存储在栈内,该指针变量里面存了个地址,
该地址为字符串中第一个字母Z的地址。
当使用printf()输出时,格式化时选择%s,会输出zhouming,这是printf遇到结尾符号&\0&即停止显示打印。
字符串&zhouming&是个常量,存储在一片连续的内存中,末尾有结尾符表示字符串的结束。
那一般的int i=1;
所有的字符窜常量都被放在静态内存区
因为字符串常量很少需要修改,放在静态内存区会提高效率
char str1[] = &abcd&;
char str2[] = &abcd&;
const char str3[] = &abcd&;
const char str4[] = &abcd&;
const char *str5 = &abcd&;
const char *str6 = &abcd&;
char *str7 = &abcd&;
char *str8 = &abcd&;
cout && ( str1 == str2 ) &&
cout && ( str3 == str4 ) &&
cout && ( str5 == str6 ) &&
cout && ( str7 == str8 ) &&
结果是:0 0 1 1
str1,str2,str3,str4是数组变量,它们有各自的内存空间;字符数组作为局部变量被存储在栈区;
而str5,str6,str7,str8是指针,它们指向相同的常量区域。,&abcd&被存储在静态数据区,而且是全局的,
问题的引入:
看看下面的程序的输出:
#include &stdio.h&
char *returnStr()
char *p=&hello world!&;
int main()
char *str=NULL;//一定要初始化,好习惯
str=returnStr();
printf(&%s\n&, str);
这个没有任何问题,因为&hello world!&是一个字符串常量,存放在静态数据区,
把该字符串常量存放的静态数据区的首地址赋值给了指针,
所以returnStr函数退出时,该该字符串常量所在内存不会被回收,故能够通过指针顺利无误的访问。
但是,下面的就有问题:
#include &stdio.h&
char *returnStr()
char p[]=&hello world!&;
int main()
char *str=NULL;//一定要初始化,好习惯
str=returnStr();
printf(&%s\n&, str);
&hello world!&是一个字符串常量,存放在静态数据区,没错,
但是把一个字符串常量赋值给了一个局部变量(char []型数组),该局部变量存放在栈中,
这样就有两块内容一样的内存,也就是说&char p[]=&hello world!&;&这条语句让&hello world!&这个字符串在内存中有两份拷贝,一份在动态分配的栈中,另一份在静态存储区。这是与前者最本质的区别,
当returnStr函数退出时,栈要清空,局部变量的内存也被清空了,
所以这时的函数返回的是一个已被释放的内存地址,所以打印出来的是乱码。
如果函数的返回值非要是一个局部变量的地址,那么该局部变量一定要申明为static类型。如下:
static 主要是为了限定范围用的。
#include &stdio.h&
char *returnStr()
static char p[]=&hello world!&;
int main()
char *str=NULL;
str=returnStr();
printf(&%s\n&, str);
这个问题可以通过下面的一个例子来更好的说明:
#include &stdio.h&
//返回的是局部变量的地址,该地址位于动态数据区,栈里
char *s1()
char* p1 = &qqq&;//为了测试&char p[]=&Hello world!&&中的字符串在静态存储区是否也有一份拷贝
char p[]=&Hello world!&;
char* p2 = &w&;//为了测试&char p[]=&Hello world!&&中的字符串在静态存储区是否也有一份拷贝
printf(&in s1 p=%p\n&, p);
printf(&in s1 p1=%p\n&, p1);
printf(&in s1: string's address: %p\n&, &(&Hello world!&));
printf(&in s1 p2=%p\n&, p2);
//返回的是字符串常量的地址,该地址位于静态数据区
char *s2()
char *q=&Hello world!&;
printf(&in s2 q=%p\n&, q);
printf(&in s2: string's address: %p\n&, &(&Hello world!&));
//返回的是静态局部变量的地址,该地址位于静态数据区
char *s3()
static char r[]=&Hello world!&;
printf(&in s3 r=%p\n&, r);
printf(&in s3: string's address: %p\n&, &(&Hello world!&));
int main()
char *t1, *t2, *t3;
printf(&in main:&);
printf(&p=%p, q=%p, r=%p\n&, t1, t2, t3);
printf(&%s\n&, t1);
printf(&%s\n&, t2);
printf(&%s\n&, t3);
运行输出结果:
in s1 p=0013FF0C
in s1: string's address:
in s2: string's address:
in s3 r=00434DC0
in s3: string's address:
in main:p=0013FF0C, q=, r=00434DC0
Hello world!
Hello world!
这个结果正好应证了上面解释,同时,还可是得出一个结论:
字符串常量,之所以称之为常量,因为它可一看作是一个没有命名的字符串且为常量,存放在静态数据区。
这里说的静态数据区,是相对于堆、栈等动态数据区而言的。
静态数据区存放的是全局变量和静态变量,从这一点上来说,字符串常量又可以称之为一个无名的静态变量,
因为&Hello world!&这个字符串在函数 s1和s2 中都引用了,但在内存中却只有一份拷贝,这与静态变量性质相当神似。
另外还有个实验:
#include &stdio.h&&&
#include &stdlib.h&&&
#include &math.h&&&
int main()&
&&& char *b;&
&&& char *c;&
&&& char a[]=&chenhuijie&;&
&&& b=&chenhuijie&;&
&&& c=&chenhuijie&;&
&&& printf(&%d,%d,%d,%d\n&,b,a,c,&(&chenhuijie&));&
#include &stdio.h&
#include &stdlib.h&
#include &math.h&
int main()
&char a[]=&chenhuijie&;
&b=&chenhuijie&;
&c=&chenhuijie&;
&&& printf(&%d,%d,%d,%d\n&,b,a,c,&(&chenhuijie&));
实验结果为:
请按任意键继续. . .
对了,字符常量&a&
sizeof(&a&)
为4,及一个字长。问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
C语言中连接两个字符串的方法都有哪些?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
strcpy/stncpymemcpystrcat/strncat自行暴力
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
lz希望这个可以帮到你:)
我前几天开始的一个小项目,是把一些需要用到的函数写下来。字符串的是第一个:)
p = strjoin(buf, &^^&, &string1&, &string2&, &string3&, NULL); 大概是这样用,可以连接n个字符串,结果在buf中。buf必须足够大。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
有一个油漆桶的故事不知道楼主听说过没有有一人被雇佣给一条街道刷油漆。第一天刷了1000米,雇主表示很满意。第二天刷了500米,雇主虽然有点不满意但是还算过得去。第三天这人刷了100米,雇主怒了问他怎么每天越刷越少?这人回答:当然越刷越少,我每次都要跑回来给刷子蘸油漆啊!回到这个问题。记住以下几点C语言中字符串是char数组C语言中字符串的长度是由该字符串变量指向的内存地址和其后第一个\0字符的位置决定的。C语言的字符串长度并没有保存在内存里!每次获取长度都要重新计算。对于字符串拼接问题,这个问题的其他回答会给你很多解答。如果只是2个短字符串拼接,没有任何问题。但是如果场景是多个长字符串拼接,其他方法都会有问题的。字符串拼接的实现concat(string1, string2)(假设是inplace,也就是结果保存在string1变量中,并且假设string1足够大,不会overflow。这几个假设并不影响分析结果):找到string1最后一个字符,也就是\0依次读取string2的每个字符,放到string1末尾在string1末尾加上一个\0于是我这样调用:char *string1 = &foo&
char *string2 = &bar&
for(int i=0;i&=1000;i++){
concat(string1,string2);
}第一个循环,读取到string1最后一个字符需要循环3次到最后一个字符第二个循环,6次第三个循环,9次...假设拼接次数是n,很容易得到这种拼接算法的复杂度是O(n^2)。有没有感觉,这个算法和上面刷油漆的人很像?要想有效率地拼接字符串,要想想concat函数中哪个部分能进行优化。很显然,循环读取string2是没办法优化的。那就只能对读取string1到第一个\0这个步骤进行优化了给个思路:char[]第一个元素存字符串长度,去掉最后\0结尾字符。在这个基础上设计算法。P.S. 这整个例子(刷油漆,以及最后的字符串存储方案)是某篇英文博客上看到的,如果有朋友知道来源请提供一下:-)P.P.S 当然我举例的for循环,你可以在每次循环结束后将string1的长度存储到一个变量里
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
sprintf也行
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
If want to do this by yourself. here is one example:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
include &stdio.h&include &string.h&void strlink(char *lhs, const char *rhs)
while(*lhs != '\0')
while(*rhs != '\0')
{lhs++ = *rhs ++;}lhs = *}void main()
char *result = new char[20];
strcpy(result, &hello_&);
strlink(result, &world&);
printf(&%s\n&, result);
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:2272人阅读
C语言中的变量
& & & 变量:顾名思义就是可以变化的量,他可以存任意类型的C语言中的数据。但是他跟常量最大的不同就是,变量可以任意修改!
& & & 变量的使用:只有一种方式:赋值的方式如:int a = 10;char
变量的使用注意:
变量左边申明什么类型,右边赋值就只能赋同种类型的数据!!(不严谨,后面讲)
变量的命名规范
1、起名要有意义
2、只能以英文字母、下划线( _ )、美元符号(
$ )开头。后面可以接数字、英文字母、下划线和美元符号( $ )(可以使用中文,但不推荐使用)
3、不能是C语言中的关键字
C语言中的关键字
关键字就是已被C语言本身使用,不能作其它用途使用的字。&
例如关键字不能用作变量名、函数名等,C语言中一共有32个关键字&
auto&register&unsigned&if
while static
double int struct break else long switch case enum typedef char extern return union const float short
continue for signed void default goto sizeof volatile do
在Xcode中如果显示为淡紫色的都是关键字(没有更改设置的情况下)。
标示符命名规范
1、起的名字要有意义
& &如:避免使用a、b、c等单个字母名字。或者避免使用xsffsdsdsrew之类的字符做名字!
& & & 推荐标示符起名就知道是什么意思,如给一个变量起名:age。一看就知道这个变量是用来保存年龄的
2、标示符才用驼峰命名法
& & 驼峰命名法(Camel-Case)
& & 驼峰命名法(Camel-Case)是电脑程序编写时的一套命名规则(惯例)。&
& & 程序员们为了自己的代码能更容易的在同行之间交流,所以才取统一的可读性比较好的命名方式。例如:有些程序员喜欢全部小写,有些程序员喜欢用下划线,所以如果要写一个my name的变量,他们常用的写法会有myname、my_name、MyName或者myName。这样的命名规则不适合所有程序员阅读,而利用驼峰命名法来表示,可以增加程序可读性。
& & 驼峰命名法就是当变量名或函数名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始,第二个单字的首字母大写;或每一个单字的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故而得名。
& & 驼峰命名法(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,而Larry Wall等人所著的畅销书《Programming
Perl》的封面图片正是一匹骆驼。 驼峰命名法的命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读性。&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4605次
排名:千里之外
原创:10篇
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 matlab 变量整数 的文章

 

随机推荐