c++ primer 练习 3.37、3.38、3.39、3.40

xiaoxiao2021-02-27  269

3.37

#include<iostream> using std::cout; using std::cin; using std::endl; int main() { const char ca[] = {'h', 'e', 'l', 'l', 'o'}; const char *cp = ca; while (*cp) { cout << *cp << endl; ++cp; } return 0; }out:

h e l l o  a 3.38

纯属搬运

Pointer addition is forbidden in C++, you can only subtract two pointers. The reason for this is that subtracting two pointers gives a logically explainable result - the offset in memory between two pointers. Similarly, you can subtract or add an integral number to/from a pointer, which means "move the pointer up or down". Adding a pointer to a pointer is something which is hard to explain. What would the resulting pointner represent? If by any chance you explicitly need a pointer to a place in memory whose address is the sum of some other two addresses, you can cast the two pointers to int, add ints, and cast back to a pointer. Remember though, that this solution needs huge care about the pointer arithmetic and is something you really should never do. 3.39

1

#include<iostream> using std::cout; using std::cin; using std::endl; #include<cstring> int main() { const char ca1[] = "string-A"; const char ca2[] = "string-B"; if (strcmp(ca1 , ca2) > 0) { cout << "string-A big" << endl; } else { cout << "string-B big" << endl; } return 0; }

2

#include<iostream> using std::cout; using std::cin; using std::endl; #include<string> using std::string; int main() { string s1 = "string-A"; string s2 = "string-B"; cout << "Big one is: "; if (s1 > s2) { cout << s1 << endl; } else { cout << s2 << endl; } return 0; }

3.40

#include<cstring> #include<iostream> using std::cout; using std::cin; using std::endl; int main() { char s1[100] = "stringA"; char s2[] = "stringB"; strcat(s1 , s2); char s[100]; strcpy(s , s1); cout << s << endl; return 0; }

转载请注明原文地址: https://www.6miu.com/read-4189.html

最新回复(0)