char *a[N] 和char (*a)[N]有什么区别?
一、”读“”写“能力
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";存于栈上,快。
扩展资料:
char型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型,分为两种,一种是无符号整型数据类型(unsigned char),另一种是有符号整型数据类型(signed char)。
char的取值范围: -2^7 ~ 2^7-1 ;signed char: -2^7 ~ 2^7-1;unsigned char : 0 ~ 2^8-1。
而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。
参考资料来源:百度百科-atof
*a[N] (*a)是一个指针有n个元素,每个元素为char型。也就是a指向的对象是有4个char元素的数组,即a是指向一维数组的指针。因记住,此时a只能指向一个包含n个元素的一维数组,a的值就是一维数组的起始地址