c语言char初始化
Ⅰ c语言中char*的初始化问题
char *a;
a是一个字符型指针,因为赋指时没有为a分配内存空间,所以a的指向是不确定的,那么a就有可能指向内存的重要区域
第二种方法,scanf("%s",a);直接将输入的字符串写入a指向的空间,所以极有可能破坏重要数据,引起系统崩溃。如果真要这么用,要先分配空间char *a=(char *)malloc(12);
而第一种方法,a = "Hi, you!";,其实在编译器看来,先为"Hi, you!"分配了一块空间,"Hi, you!"其实是它所在的空间首地址。所以a = "Hi, you!";其实是将a重新指向"Hi, you!"的空间,所以没问题。
注意,char *a="Hi,you!";和char *a; a = "Hi, you!"; 是一样的。
而不同于char *a; strcpy(a,"Hi, you!");
这种是不对的,是将"Hi,you!"直接复制到a的空间里,所以也不安全
Ⅱ C语言中怎么初始化字符变量
C语言中,初始化操作就是在定义变量的时候,对变量进行赋值,即称为变量的初始化。对于字符变量也是一样的。
举例如下:
charch='a';//定义一个字符变量,变量名为ch,并进行初始化
charstr[]="abcd";//定义一个字符数组,数组名为str,并进行初始化
Ⅲ c语言字符数组初始化语法:char str[]=""与char str[]={}有何区别
区别不大,看你怎么用
如果你这样写:
char str[]="abc" ;
char str[]={"abc"} ;
那就没区别
char str[]="abc" ;
char str[]={'a','b','c'} ;
那就有区别了,char str[]="abc" ;相当于char str[]={'a','b','c',0 } ;
这样就看出区别了,数组长度不一样,一个是4因为会自动添加一个结束符,一个是3不会添加结束符。
Ⅳ 在C语言中,关于字符型指针初始化char *p="hello world" 的问题
对于字符串常量,编译器都是默认按其大小分配内存存放字符串,并把地址首地址赋值指针变量。
如:
char
*p="hello
world";
其实编译的时候等于:
const
char
str[]
=
"hello
world";
char
*p
=
str;
只不过这个
str
数组名你没法直接拿来用而已。
Ⅳ C语言的char指针初始化理解
char 指针,也就是char *类型。 其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值。
对于指针来说,在C语言中,就是一个地址。区分初始化情况,有四种表象:
1 初始化为空。即
char * str = NULL;
的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值。
2 初始化为常量字符串地址。
char * str = "test";
常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读取,不可写入。即str的值可以改,但是str指向的值是不可修改的。
3 初始化为变量地址。
这里的变量地址,包括全局变量,局部变量的地址,以及通过动态分配申请到的内存地址。
这种情况下,对指针指向的空间是可以修改的。
4 不做初始化。
这种情况在C语言中是允许的。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL。而对于局部变量,将是一个随机值。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错。
Ⅵ C语言中char的用法
#include<stdio。h>
intmain()
{
inti;
charc;//定义一个char类型的变量。
c='a';//赋值
for(i=0;i<26;i++){
printf(“%c”,c);//输出一个字符用%c,
c++;//charc增加1,依次可以得到:abcdef。。。。z
}
printf(“ ”);
if(c<='z')
printf(“stillasmallletter。 ”);
else
printf(“Notasmallletter。 ”);
scanf(“%c”,&c);//输入一个字符到c中。
charstr[10]=“AString”;//定义一个字符数组,它的初值是“AString”
for(i=0;str[i]!='