char *a是声明了一个指向char类型的指针变量;此时,a并没有被初始化,没有被指向任何数据;所以此时scanf("%s", a)是错误的,a此时只是一个空指针,而且你也不能向一个指针变量中存储非地址类型之外的数据;这就相当于:你要帮你朋友(char *a所指向的对象)买某一个类型的商品;这个商品名字叫...
char *a = "abcd"; 存于静态存储区。在栈上的数组比指针所指向字符串快。因此慢 而char a[20] = "abcd"; 存于栈上。快 另外注意: char a[] = "01234",虽然没有指明字符串的长度,但是此时系统已经开好了,就是大小为6---'0' '1' '2' '3' '4' '5' '\0',(注意strlen(a)是不计‘\0’...
a[0]是指向字符串China的指针,而a是指向a[0]的指针。 二级指针的赋值与声明:char **s = a; //定义了一个名为s的二级指针,指向a的地址 即,*s=a[0],也就是printf("%s",*s) #include<stdlib.h>#include<stdio.h>#include<string.h>#include<string>#include<iostream>using namespacestd;intmain(...
(char*)a的意思是:将a强制类型转换为字符指针类型。char*是C语言中,用于定义指针的变量符号。比如:char *p; 这个变量p是个指针变量;就是说,p这个变量里能存储一个char类型的变量的首地址。字符指针是指向类型为unsigned char的指针变量。例如:unsigned char ch = 'a';unsigned char *ch_p ...
char *a[]表示a是数组, 数组中的元素是指针, 指向char类型. (数组里面所有的元素是连续的内存存放的).需要特别注意 : 数组名在C里面做了特殊处理 , 数组名用数组所占用内存区域的第一个字节的内存地址替代了。并且数组名a也表示指针.如数组占用的内存区域是0x7fff5da3f550到0x7fff5da3f5a0, 那么a就被替换...
char a[] 是一个字符数组,而 char *a[] 则是一个指向字符指针数组的指针。具体来说,char a[] 实际上是创建了一个包含相同类型元素的数组。例如,定义一个包含字符串的数组可以这样写:char a[] = "hello"; 或定义一个包含多个字符的数组:char a[] = {'h', 'e', 'l', 'l', 'o...
char a [ ] = "hello"; char *s =a; for(int i= 0; i < strlen(a) ; i++) printf("%c", s[i]); // 或 printf("%c",*s++); 字符指针可以用 间接操作符 *取其内容,也可以用数组的下标形式 [ ],数组名也可以用 *操作,因为它本身表示一个地址 。。 比如printf("%c",*a); 将...
char a[]="cdefgh"; /*這個是常量字串的拷貝, 相當於strcpy(a,"cdefgh"), 這樣寫都會有字串拷貝, 造成時間和空間上的開銷, 如果字串很長儘量不要這樣寫, 由於字元陣列a在棧上, 所以在函數結束後它便無效了.. --- char *a="cdefgh"; a直接指向常量字串,...
char *a是定义一个char型指针变量a,后面紧接着char *p=a,是定义一个char型指针变量p,并且p和a指向同一个位置。指针里好像有一个说法是什么:定义、关联、引用,三者有顺序