C语言char a='A'什么意思

作者&投稿:韩晏 (若有异议请与网页底部的电邮联系)
C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?~

两者区别如下:
一、”读“”写“能力
char*a="abcd";此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。
而char a[30]="abcd";此时"abcd"存放在栈。可以通过指针去访问和修改数组内容。
二、赋值时刻
char*a="abcd";是在编译时就确定了(因为为常量)。
char a[30]="abcd";是在运行时确定
三、指向地址所存储的值不同。
对于char**p1,*p1的类型为char*型,而**p1的类型才是char型。
对于char*类指针p2,*p2就是char型。
char*a="abcd";存于静态存储区。在栈上的数组比指针所指向字符串快。慢
char a[30]="abcd";存于栈上。快。

四、内存分配方式
内存分配有三种:堆区和栈区、静态存储区。功能不同;使用方式也不同。
1、栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
2、堆:就是那些由new或malloc分配的内存块,在不适用时,要手动用delete或free来释放内存区域。
3、静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,并立即将指针置位NULL,防止产生野指针。
参考资料:
百度百科——atof

在c语言中,char* q=a;定义一个指向字符类型的指针q,并将它初始化为a。
这里a一般应该是一个地址,通过*q我们就可以访问a处内存的值。
示例程序如下:
#includeint main(int argc, char* argv[]){ char c='A'; printf("字符c的初始值是:%c;
",c); char* a=NULL; a=&c;// 取c的地址复制给a char* q=a;//定义一个执行字符类型的指针并初始化为a printf("
通过指针q访问字符c,得到c的值是%c;
",*q); *q='Z'; printf("
通过指针q修改字符c后c的值变为:%c。
",c); getchar(); return 0;}
编译后的运行结果如下图所示:

声明一个字符型变量,变量名是a,同时赋初值'A'。
注意,c语言中char型变量在内存中只占1个字节,存放一个字符。

char *a是声明了一个指向char类型的指针变量;
此时,a并没有被初始化,没有被指向任何数据;
所以此时scanf("%s", a)是错误的,a此时只是一个空指针,而且你也不能向一个指针变量中存储非地址类型之外的数据;
这就相当于:
你要帮你朋友(char *a所指向的对象)买某一个类型的商品;
这个商品名字叫“%s”;
但是你却没告诉计算机怎么联系(char *a所指向的对象)

char *a = "hello world"; 并不是原始写法,是一种简化写法,等同于:
char x[] = "hello world";
char *a;
a = x;
好处除了一句话干了三句话的事情之外,还少用了一个中间变量(数组名本身就是一个指针变量)

此外,最原始的C,如果你写下:
char x[] = "hello world";
char y[] = "hello world";
char *a = x;
char *b = y;
此时,a、b变量本身是独立开的,可区分的,但是他们所指向的内存地址却是一个,这是C语言的一个特性,在编译时,会将相同的字符串合并起来创建,以此来节省空间,以C为原型的一些语言,比如obj-c也保留了这个特性;

就是申明cahr变量 a = 'A';如果printf("%c",a) 输出A


武夷山市19411015628: C语言中的char具体用法 -
城彦双川: C语言中char用于定义字符类型变量或字符指针变量,例如“char a;”则定义了变量a是字符类型,“char *a;”则定义了变量a是字符指针类型. char是C语言整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认...

武夷山市19411015628: c语言中char是什么意思 -
城彦双川: 楼上完全是误导人,什么字符变量啊! char 是一个数据类型,作用才是定义字符型变量(单个或是字符串). 比方int 是整形数据,int a = 3;这里int 是类型, a 是整型变量,3是赋值; char s = 'A'; char是字符类型,s是字符型变量,A是赋值给变量s; char s[] = "c program"; char是字符类型,s[]是字符型数组,"c program"是赋给数组的值.

武夷山市19411015628: 在C语言中,设char ch="a";表达式ch!(ch>="a"&&ch<="Z")?ch: (ch+32)的值是? -
城彦双川: 在C语言中,设char ch="a";表达式ch!(ch>="a"&&ch<="Z")?ch: (ch+32)的值是? 应改为: 在C语言中,设char ch='a';表达式ch=(ch>='a'&&ch<='z')?ch:(ch+32)的值是? 解答: a

武夷山市19411015628: c语言中 char a; 请问 a与'a'有啥区别 'a'是a的ascll码?是个数字? -
城彦双川: 你想问是char a='a'; 这两个a的区别. 首先第一个a是变量名,没有ascll码值,只是一个申明,存放'a'的内存地址.而'a'是一个字符,对应的ascll是97.

武夷山市19411015628: char a='\'; 在c++中应该怎么表示? -
城彦双川: 因为 像 \、# 、%等等字符在程序中有特别的用途,所以为了正常使用它,就需要复杂一点的表示了,此时C中用\来引起一个表达式就是了.后边的表达式有几种,一种就是引起 \'"等 然后就是引起一个8进制表达式如\054,其中0必须有,表示8进制 或者一个十六进制的表达式\x9f,其中x表示十六进制,同样不可省略 这种情况不光是在C语言中有 在其他的语言甚至技术中都有 例如html语言,就是网页文件中 ,大于号和小于号构成的尖括号,分别都要用转义字符来表示 空格什么的也是 你可以看看 下次你提问题的时候,带上尖括号,然后查看源文件,你会看到对应位置上没有尖括号,而是两个东西

武夷山市19411015628: C语言中char是什么概念 怎么用? -
城彦双川: char 就是定义字符型变量 将某字符的ASCII 码付给某变量 例如: char c1 c2 c3;c1='A';c2=65;c3='C';65是B的ASCII码,这个蛮抽象的.

武夷山市19411015628: c语言中的char -
城彦双川: char C; 定义字符变量 占一个字节 char s[256]; 定义字符串变量 占256个字节

武夷山市19411015628: C语言中,一个汉字是被当作一个字符还是被当作是一个字符串? char a='我'; char -
城彦双川: C语言中,一个汉字被当作是一个字符串,用数组表示 char a[]="我";

武夷山市19411015628: C语言中的 char a【3】 是定义一个字符串麽? a【3】表示什么~ -
城彦双川: c语言中没有字符串的数据类型,都是定义一个数组,然后利用数组存储字符串的每一个字符!!!另外他与字符串有一定的区别,字符串最后一个位置存的是'\0',而字符数组却没有!!!如果用数组存储一个字符串,在其最后没有'\0'的情况下,使用printf输出的时候会出现乱码的,因为printf是以'\0'作为结束标志的,遇不到'\0'就出现了越界访问!!!不明白的可以交流下啊!!c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!

武夷山市19411015628: C语言中,char a[]={'h','a','p','p','y'};与char a[]="happy";与char a[]={"happy"}; -
城彦双川: 1,表示定义一个含有五个元素的字符数组,它的元素是字符.2,表示定义一个字符串常量.与int a = 2一样理解就可以了.还有一种形式就是*a = "happy".3,表示定义一个含有一个元素的字符串数组,它的元素是字符串.注意与第一个区别开来.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网