main() { static char *s1="1,2,3,4,5,6",
发布网友
发布时间:2024-10-21 07:30
我来回答
共4个回答
热心网友
时间:2024-10-21 07:27
1:首先和你说说指针的定义,你说的*p=b是定义一个指针变量让其指向数组b(指向第一个元素),也就是把b的首个字符地址给p(参看第2条);
2:其次和你说说除了定义以外有*和无*的区别:有*代表取地址,无*代表取该地址所指向的值。比如说你上述的main函数中,如果输出p,那么输出的就是p内所存的地址所指向的值(没有调用point函数之前是字符a),如果输出*p,那么输出的就是他所指向值在内存中的地址(没有调用point函数之前指向的是字符a,所以输出的地址就是字符a在内存中的地址)。
你的第一个问题就不难看出:*s1=*s2的意思就是把s2中存的那个字符串的地址给s1,让s1也指向s2的地址;s1=s2的意思就是把s2的所指向的字符串的值给s1所指向的字符串;所以*s1=*s2和s1=s2的区别是前者指向同一个字符串,后者是指向不同字符串但是两个字符串相当。
这是我的理解,希望采纳。
热心网友
时间:2024-10-21 07:28
char
*str2[m]定义的str实际上是一个二维数组,你printf("&str2=[%d]=%ld:str2[%d]=%s\n",i,&str2[i],i,str2[i]);输出的实际上是*str[0],*str[1]...中字符串的地址,而地址都是占一个int型大小的,所以说间隔都是4b。。。
热心网友
时间:2024-10-21 07:29
把b的地址给指针变量p;
热心网友
时间:2024-10-21 07:28
其中*s1=*s2是将*s2中值赋给*s1.
这里的*p=b,是相当于*p=b[0];,就是把p中的首地址赋值*p也就相当于把p[0],赋给*p。