有关字符指针的问题?#include<stdio.h>
#include #define M 5 #define N 13 int main(void) { char *s1="abc",*s2="wxyz",*s3="ijklmn"; char str1[M,N]={"C","C++","Visual BASIC","Java","Ada"}; char *str2[M]={s2,str1[2],s1,"ijklm"}; char **str3=&s2; int i; printf("\n"); pri#
s1,s2,s3这三个变量是“字符型指针变量”。 对于你提供的。下面一一说明: 1、对于char *str2[M]={s2,str1[2],s1,"ijklm"}; 这是定义了一个字符型指针数组str2,str2是一个数组,它用来保存字符型指针,str2有M个元素,s2存放在第0个位置,s2存放在第1个位置。这样作是可以的。因为str2是存放“字符型指针”的数组。 2、对于printf("s1=%s,s2=%s,s3=%s\n",s1,s2,s3); 你说的“指针变量显示指针所指的内容时需要加星号”,说明你的理解有误,“指针变量显示指针所指的内容时需要加星号”是说在引用指针所指的内容时需要加星号,而当把指针变量作为参数传递给函数时就不要这样了。 这里printf函数定义的参数是char *,即:字符型指针,所以,把s1作为printf的参数也就没问题了。因为s1就是字符型指针啊。 回答你的最后问题:“另外指针变量可以直接用字符串来赋值吗?” 指针变量可以直接用字符串来赋值。比如: char *s1="abc"; 这样作,是把一个字符串常量赋予s1。