char *a[]="abcd";为什么是错了?
2个回答
展开全部
楼主你好:
首先
char *a[]
表示 a是数组, 数组中的元素是指针, 指向char类型. (数组里面所有的元素是连续的内存存放的).需要特别注意 : 数组名在C里面做了特殊处理 ,
数组名用数组所占用内存区域的第一个字节的内存地址替代了。并且数组名a也表示指针.如数组占用的内存区域是0x7fff5da3f550到0x7fff5da3f5a0,
那么a就被替换成0x7fff5da3f550.所以a 并不表示a地址存储的内容,
而是a地址本身(这个从 a = &a 就能够体现出来). 这个一定要理解, 否则会无法进行下去. a+1 表示a的第二个元素的内存地址, 所以是加8字节.( 因为a的元素是char 指针,
所需数岁要的空间为8字节(64位内存地址). )*(a+1) 则表示a这个数组的第二拿卜个元素的内容 (是个char 类型的指针.
本例表示为world字符串的地址).
*(*(a+1)) 则表示a这个数组的第二个元素的内容(char指针)所指向的内容(w字符).
char * a[10] 表示限定这个数组最多可存放10个元素(char指针), 也就是说这个数组占用10*8 = 80字薯敏睁节.
楼主你要定义的是数组,所以你要了解一下数组的赋值方式,
char *a[]={"ddasd"};
而不是char *a[]="abcd";
希望对你有帮主,望采纳,谢谢。
首先
char *a[]
表示 a是数组, 数组中的元素是指针, 指向char类型. (数组里面所有的元素是连续的内存存放的).需要特别注意 : 数组名在C里面做了特殊处理 ,
数组名用数组所占用内存区域的第一个字节的内存地址替代了。并且数组名a也表示指针.如数组占用的内存区域是0x7fff5da3f550到0x7fff5da3f5a0,
那么a就被替换成0x7fff5da3f550.所以a 并不表示a地址存储的内容,
而是a地址本身(这个从 a = &a 就能够体现出来). 这个一定要理解, 否则会无法进行下去. a+1 表示a的第二个元素的内存地址, 所以是加8字节.( 因为a的元素是char 指针,
所需数岁要的空间为8字节(64位内存地址). )*(a+1) 则表示a这个数组的第二拿卜个元素的内容 (是个char 类型的指针.
本例表示为world字符串的地址).
*(*(a+1)) 则表示a这个数组的第二个元素的内容(char指针)所指向的内容(w字符).
char * a[10] 表示限定这个数组最多可存放10个元素(char指针), 也就是说这个数组占用10*8 = 80字薯敏睁节.
楼主你要定义的是数组,所以你要了解一下数组的赋值方式,
char *a[]={"ddasd"};
而不是char *a[]="abcd";
希望对你有帮主,望采纳,谢谢。
追问
可是再定义字符串数组时:char a[]={"abcd"}; 和另一种方式char a[]="abcd";而指针数组没有第二种方式呢?
展开全部
char *a[]
表示 a是数组, 数组中的元素是指针, 指向char类型. (数组里面所有的元素是连续的内存存放的).
需岩汪要特别注意 : 数组名在C里面做了特殊处理 ,
数组名用世枣慎数组所占用内存区域的第一个字节的内存地址替代了。并且数组名a也表示指针.如数组占用的内存区域是0x7fff5da3f550到0x7fff5da3f5a0,
那么a就被替换成0x7fff5da3f550.所以a 并不表示a地址存储的内容,
而是a地址本身(这个从 a = &a 就能够体现出来). 这个一定要理解, 否则会无法进行下去. a+1 表示a的第二个元素的内存地址, 所以是加8字节.( 因搜敬为a的元素是char 指针,
所需要的空间为8字节(64位内存地址). )*(a+1) 则表示a这个数组的第二个元素的内容 (是个char 类型的指针.
表示 a是数组, 数组中的元素是指针, 指向char类型. (数组里面所有的元素是连续的内存存放的).
需岩汪要特别注意 : 数组名在C里面做了特殊处理 ,
数组名用世枣慎数组所占用内存区域的第一个字节的内存地址替代了。并且数组名a也表示指针.如数组占用的内存区域是0x7fff5da3f550到0x7fff5da3f5a0,
那么a就被替换成0x7fff5da3f550.所以a 并不表示a地址存储的内容,
而是a地址本身(这个从 a = &a 就能够体现出来). 这个一定要理解, 否则会无法进行下去. a+1 表示a的第二个元素的内存地址, 所以是加8字节.( 因搜敬为a的元素是char 指针,
所需要的空间为8字节(64位内存地址). )*(a+1) 则表示a这个数组的第二个元素的内容 (是个char 类型的指针.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询