1樓:long周
兩者的區別懸殊!
char *s1="hello"這個是乙個字串常量,你可以像乙個字元陣列一樣使用它,但是你不能更改這個字串的值比如 s1[2]='e'這樣不行,
char s2="hello";是乙個字串變數,可以被修改。
不過,這兩者再作函式的形參的時候是完全等價的。
void function(char *pstr);
void function(char pstr);
可以相當絕對的說這兩種完全等價,沒有任何區別。
2樓:匿名使用者
前者是指向字串的指標,後者是字元陣列。但是在實際使用中,陣列名指向了陣列的第乙個字元,從這一點來說,二者並沒有本質的區別。
3樓:徘徊向前
第乙個是指標形式的 第二個是一般的陣列 就效果來說是一樣的 第乙個可以用指標引用 在應用的時候會有一些小的區別 如 scnaf(%d,s2 )
4樓:匿名使用者
你好:讓我來深入淺出的回答這個問題,讓你能徹底明白的;
(1)"hello"是什麼?
它是乙個字串常量,注意字串在c語言中是沒有變數一說的,
(2)"hello"在記憶體中如何存放?
它象一般的陣列一樣,沒每乙個記憶體小格仔存放乙個字母,這樣順序排下來,很顯然字母h就是頭
(3)char *s 是什麼?
很顯然它就是乙個指標變數,這個s就是用來存放字元位址的,在我們這裡,它就存放了字元h的記憶體位址!!也就是這個字串的首位址。
(4)有了這個首位址我們輸出的時候,首先找到首位址,然後依次讀出後面的字元,直到遇到'\0'結束,所以你可想而知,這個字串的長度就是6,因為系統自動加上了『\0'
(5)char s2="hello"是什麼?
它就是乙個名字是s2的字元陣列,存放了h,e,l,l,o,這5個字元,很顯然它的長度是5,這也正是和前者的區別所在.
呵呵,打完收工
祝你好運!
編寫乙個函式char *link(char *s1,char *s2),實現字串s1與s2的交叉連線,連線後得到的新字串放在s1中
5樓:匿名使用者
#include
char *link(char *,char *);
void main( )
char *link(char *a,char *b)else if(i }else if(j }for(i =0;i *(a+i) = *(c+i); *(a+i) = '\0'; return a; } // 思想簡單,所以**寫得有點淤長,但是是能夠解決問題的。 // 並且要注意gets、puts函式對於字串的處理是以null或者'\0'結束的。 6樓:匿名使用者 #include char *strcat(char *s1, const char *s2) int main() c語言編寫函式實現兩個字串比較(其功能與標準函式strcmp一樣)函式原型int mystrcpy(char*s1,char*s2) 7樓: 以下**就可解決此問題: //#include "stdafx.h"//if the vc++6.0, with this line. #include "stdio.h" int mystrcmp(const char *s1,const char *s2) int main(void){//測試一下char a="12378",b="1233467890",f; if((f=mystrcmp(a,b))>0)printf("a>b\n"); else if(f<0) printf("a 8樓:匿名使用者 int mystrcmp(char *s1, char *s2) return *s1-*s2;} 編寫取子字串函式void fun(char s1[],char s2[],int m,int n),其作用是將字元陣列s2中從第m個字元開始 9樓:匿名使用者 #include void fun(char s1,char s2,int m,int n) void main() 10樓: for (;m< *s1++ = *s2++; 11樓: void fun..} 你好 讓我來深入淺出的回答這個問題,讓你能徹底明白的 1 hello 是什麼?它是乙個字串常量,注意字串在c語言中是沒有變數一說的,2 hello 在記憶體中如何存放?它象一般的陣列一樣,沒每乙個記憶體小格仔存放乙個字母,這樣順序排下來,很顯然字母h就是頭 3 char s 是什麼?很顯然它就是乙個...char s1hellochar s2hello 這兩個C語言句有什麼區別