Arrow operator -> in C/C++ with Examples - GeeksforGeeks (2024)

Skip to content

Arrow operator -> in C/C++ with Examples - GeeksforGeeks (1)

Last Updated : 20 Mar, 2023

Summarize

Comments

Improve

Suggest changes

Like Article

Like

Save

Report

An Arrow operator in C/C++ allows to access elements in Structures and Unions. It is used with a pointer variable pointing to a structure or union. The arrow operator is formed by using a minus sign, followed by the greater than symbol as shown below.
Syntax:

(pointer_name)->(variable_name)

Operation: The -> operator in C or C++ gives the value held by variable_name to structure or union variable pointer_name.
Difference between Dot(.) and Arrow(->) operator:

  • The Dot(.) operator is used to normally access members of a structure or union.
  • The Arrow(->) operator exists to access the members of the structure or the unions using pointers.

Examples:

  • Arrow operator in structure:

C

// C program to show Arrow operator

// used in structure

#include <stdio.h>

#include <stdlib.h>

// Creating the structure

struct student {

char name[80];

int age;

float percentage;

};

// Creating the structure object

struct student* emp = NULL;

// Driver code

int main()

{

// Assigning memory to struct variable emp

emp = (struct student*)

malloc(sizeof(struct student));

// Assigning value to age variable

// of emp using arrow operator

emp->age = 18;

// Printing the assigned value to the variable

printf("%d", emp->age);

return 0;

}

C++

// C++ program to show Arrow operator

// used in structure

#include <iostream>

using namespace std;

// Creating the structure

struct student {

char name[80];

int age;

float percentage;

};

// Creating the structure object

struct student* emp = NULL;

// Driver code

int main()

{

// Assigning memory to struct variable emp

emp = (struct student*)

malloc(sizeof(struct student));

// Assigning value to age variable

// of emp using arrow operator

emp->age = 18;

// Printing the assigned value to the variable

cout <<" "<< emp->age;

return 0;

}

// This code is contributed by shivanisinghss2110

Javascript

// JavaScript program to show Arrow operator used in structure

let emp = null;

// Creating the structure

class Student {

constructor(name, age, percentage) {

this.name = name;

this.age = age;

this.percentage = percentage;

}

}

// Assigning memory to struct variable emp

emp = new Student('', 0, 0);

// Assigning value to age variable

// of emp using arrow operator

emp.age = 18;

// Printing the assigned value to the variable

console.log(' ' + emp.age);

Output:

18

Time complexity: O(1).

Auxiliary space: O(n). // n is the size of memory that is being dynamically allocated using the malloc function to store the structure student. The amount of memory used is proportional to the size of the structure and the number

  • Arrow operator in unions:

C++

// C++ program to show Arrow operator

// used in structure

#include <iostream>

using namespace std;

// Creating the union

union student {

char name[80];

int age;

float percentage;

};

// Creating the union object

union student* emp = NULL;

// Driver code

int main()

{

// Assigning memory to struct variable emp

emp = (union student*)

malloc(sizeof(union student));

// Assigning value to age variable

// of emp using arrow operator

emp->age = 18;

// DIsplaying the assigned value to the variable

cout <<""<< emp->age;

}

// This code is contributed by shivanisinghss2110

C

// C program to show Arrow operator

// used in structure

#include <stdio.h>

#include <stdlib.h>

// Creating the union

union student {

char name[80];

int age;

float percentage;

};

// Creating the union object

union student* emp = NULL;

// Driver code

int main()

{

// Assigning memory to struct variable emp

emp = (union student*)

malloc(sizeof(union student));

// Assigning value to age variable

// of emp using arrow operator

emp->age = 18;

// DIsplaying the assigned value to the variable

printf("%d", emp->age);

}

Output:

18


Please Login to comment...

Similar Reads

Logical Not ! operator in C with Examples

! is a type of Logical Operator and is read as "NOT" or "Logical NOT". This operator is used to perform "logical NOT" operation, i.e. the function similar to Inverter gate in digital electronics. Syntax: !Condition // returns true if the conditions is false // else returns false Below is an example to demonstrate ! operator: Example: // C program t

1 min read

Modulo Operator (%) in C/C++ with Examples

In C or C++, the modulo operator (also known as the modulus operator), denoted by %, is an arithmetic operator. The modulo division operator produces the remainder of an integer division which is also called the modulus of the operation. Syntax of Modulus OperatorIf x and y are integers, then the expression: x % y;pronounced as "x mod y". For examp

5 min read

Operands for sizeof operator

The sizeof operator is used to return the size of its operand, in bytes. This operator always precedes its operand. The operand either may be a data-type or an expression. Let's look at both the operands through proper examples. type-name: The type-name must be specified in parentheses. sizeof(type - name) Let's look at the code: C/C++ Code #includ

2 min read

sizeof operator in C

Sizeof is a much-used operator in the C. It is a compile-time unary operator which can be used to compute the size of its operand. The result of sizeof is of the unsigned integral type which is usually denoted by size_t. sizeof can be applied to any data type, including primitive types such as integer and floating-point types, pointer types, or com

3 min read

C++ | Operator Overloading | Question 10

How can we restrict dynamic allocation of objects of a class using new? (A) By overloading new operator (B) By making an empty private new operator. (C) By making an empty private new and new[] operators (D) By overloading new operator and new[] operators Answer: (C) Explanation: If we declare new and [] new operators, then the objects cannot be cr

1 min read

C++ | Operator Overloading | Question 2

Which of the following operators cannot be overloaded (A) . (Member Access or Dot operator) (B) ?: (Ternary or Conditional Operator ) (C) :: (Scope Resolution Operator) (D) .* (Pointer-to-member Operator ) (E) All of the above Answer: (E) Explanation: See What are the operators that cannot be overloaded in C++?Quiz of this Question

1 min read

C++ | Operator Overloading | Question 3

Which of the following operators are overloaded by default by the compiler in every user defined classes even if user has not written? 1) Comparison Operator ( == ) 2) Assignment Operator ( = ) (A) Both 1 and 2 (B) Only 1 (C) Only 2 (D) None of the two Answer: (C) Explanation: Assign operator is by default available in all user defined classes even

1 min read

C++ | Operator Overloading | Question 4

Which of the following operators should be preferred to overload as a global function rather than a member method? (A) Postfix ++ (B) Comparison Operator (C) Insertion Operator &lt;&lt; (D) Prefix++ Answer: (C) Explanation: cout is an object of ostream class which is a compiler defined class. When we do "cout &lt;&lt; obj&quot; where obj is an obje

1 min read

C++ | Operator Overloading | Question 6

Predict the output #include&lt;iostream&gt; using namespace std; class A { int i; public: A(int ii = 0) : i(ii) {} void show() { cout &lt;&lt; i &lt;&lt; endl; } }; class B { int x; public: B(int xx) : x(xx) {} operator A() const { return A(x); } }; void g(A a) { a.show(); } int main() { B b(10); g(b); g(20); return 0; } (A) Compiler Error (B) 10 2

1 min read

C++ | Operator Overloading | Question 7

Output of following program? #include &lt;iostream&gt; using namespace std; class Test2 { int y; }; class Test { int x; Test2 t2; public: operator Test2 () { return t2; } operator int () { return x; } }; void fun ( int x) { cout &lt;&lt; &quot;fun(int) called&quot;; } void fun ( Test2 t ) { cout &lt;&lt; &quot;fun(Test 2) called&quot;; } int main()

1 min read

C++ | Operator Overloading | Question 10

Predict the output? #include&lt;stdlib.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream&gt; using namespace std; class Test { int x; public: void* operator new(size_t size); void operator delete(void*); Test(int i) { x = i; cout &lt;&lt; &quot;Constructor called \n&quot;; } ~Test() { cout &lt;&lt; &quot;Destructor called \n&quot;; } }; void* Test

2 min read

C++ | Operator Overloading | Question 9

#include&lt;iostream&gt; using namespace std; class Point { private: int x, y; public: Point() : x(0), y(0) { } Point&amp; operator()(int dx, int dy); void show() {cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; &quot;, y = &quot; &lt;&lt; y; } }; Point&amp; Point::operator()(int dx, int dy) { x = dx; y = dy; return *this; } int main() { Point p

1 min read

C++ | Operator Overloading | Question 10

Which of the following operator functions cannot be global, i.e., must be a member function. (A) new (B) delete (C) Conversion Operator (D) All of the above Answer: (C) Explanation: new and delete can be global, see following example. #include #include #include using namespace std; class Myclass { int x; public: friend void* operator new(size_t siz

1 min read

C++ | Nested Ternary Operator

Ternary operator also known as conditional operator uses three operands to perform operation. Syntax : op1 ? op2 : op3; Nested Ternary operator: Ternary operator can be nested. A nested ternary operator can have many forms like : a ? b : ca ? b: c ? d : e ? f : g ? h : ia ? b ? c : d : e Let us understand the syntaxes one by one : a ? b : c =&gt; T

5 min read

How can we use Comma operator in place of curly braces?

In C and C++, comma (, ) can be used in two contexts: Comma as an operator Comma as a separator But in this article, we will discuss how a comma can be used as curly braces. The curly braces are used to define the body of function and scope of control statements. The opening curly brace ({) indicates starting scope and closing curly brace (}) indic

3 min read

C program to check if a given year is leap year using Conditional operator

Given an integer that represents the year, the task is to check if this is a leap year, with the help of Ternary Operator. A year is a leap year if the following conditions are satisfied: The year is multiple of 400.The year is a multiple of 4 and not a multiple of 100. Following is pseudo-code if year is divisible by 400 then is_leap_year else if

1 min read

dot (.) Operator in C

The C dot (.) operator is used for direct member selection via the name of variables of type struct and union. Also known as the direct member access operator, it is a binary operator that helps us to extract the value of members of the structures and unions. Syntax of Dot Operatorvariable_name.member;variable_name: An instance of a structure or a

2 min read

C/C++ Ternary Operator - Some Interesting Observations

Predict the output of following C++ program. #include &lt;iostream&gt; using namespace std; int main() { int test = 0; cout &lt;&lt; &quot;First character &quot; &lt;&lt; '1' &lt;&lt; endl; cout &lt;&lt; &quot;Second character &quot; &lt;&lt; (test ? 3 : '1') &lt;&lt; endl; return 0; } One would expect the output will be same in both the print sta

3 min read

Result of comma operator as l-value in C and C++

Using the result of the comma operator as l-value is not valid in C. But in C++, the result of the comma operator can be used as l-value if the right operand of the comma operator is l-value. For example, if we compile the following program as a C++ program, then it works and prints b = 30. And if we compile the same program as a C program, then it

1 min read

A comma operator question

Consider the following C programs. C/C++ Code // PROGRAM 1 #include&amp;lt;stdio.h&amp;gt; int main(void) { int a = 1, 2, 3; printf(&amp;quot;%d&amp;quot;, a); return 0; } The above program fails in compilation, but the following program compiles fine and prints 1. C/C++ Code // PROGRAM 2 #include&amp;lt;stdio.h&amp;gt; int main(void) { int a; a =

2 min read

When should we write our own assignment operator in C++?

The answer is same as Copy Constructor. If a class doesn't contain pointers, then there is no need to write assignment operator and copy constructor. The compiler creates a default copy constructor and assignment operators for every class. The compiler created copy constructor and assignment operator may not be sufficient when we have pointers or a

3 min read

Default Assignment Operator and References in C++

We have discussed assignment operator overloading for dynamically allocated resources here. In this article, we discussed that when we don't write our own assignment operator, the compiler creates an assignment operator itself that does shallow copy and thus causes problems. The difference between shallow copy and deep copy becomes visible when the

2 min read

Scope Resolution Operator vs this pointer in C++

Scope resolution operator is for accessing static or class members and this pointer is for accessing object members when there is a local variable with the same name. Consider below C++ program: C/C++ Code // C++ program to show that local parameters hide // class members #include &lt;iostream&gt; using namespace std; class Test { int a; public: Te

3 min read

Implementing ternary operator without any conditional statement

How to implement ternary operator in C++ without using conditional statements.In the following condition: a ? b: c If a is true, b will be executed. Otherwise, c will be executed.We can assume a, b and c as values. 1. Using Binary Operator We can code the equation as : Result = (!!a)*b + (!a)*c In above equation, if a is true, the result will be b.

4 min read

How to Take Operator as Input in C?

In C, an operator is a symbol that tells the compiler to perform specific mathematical or logical manipulations. We may need to take operator as an input in some cases. In this article, we will learn how to take an operator as input in C. Get Input Operator in CTo take an operator as input in C, we can use the we can use any input function (scanf()

2 min read

To find sum of two numbers without using any operator

Write a program to find sum of positive integers without using any operator. Only use of printf() is allowed. No other library function can be used. Solution It's a trick question. We can use printf() to find sum of two numbers as printf() returns the number of characters printed. The width field in printf() can be used to find the sum of two numbe

9 min read

Bitwise Complement Operator (~ tilde)

Pre-requisite:Bitwise Operators in C/ C++Bitwise Operators in Java The bitwise complement operator is a unary operator (works on only one operand). It takes one number and inverts all bits of it. When bitwise operator is applied on bits then, all the 1's become 0's and vice versa. The operator for the bitwise complement is ~ (Tilde). Example: Input

3 min read

iswprint() in C/C++ with Examples

The iswprint() is a built-in function in C/C++ which checks if the given wide character can be printed or not. It is defined within the cwctype header file of C++. By default, the following characters are printable: Digits (0 to 9)Uppercase letters (A to Z)Lowercase letters (a to z)Punctuation characters (!"#$%&amp;'()*+, -./:;?@[\]^_`{|}~)Space Sy

2 min read

iswgraph() in C/C++ with Examples

The iswgraph() is a built-in function in C/C++ which checks if the given wide character has a graphical representation or not. It is defined within the cwctype header file of C++. By default, the following characters are graphic: Digits (0 to 9)Uppercase letters (A to Z)Lowercase letters (a to z)Punctuation characters (!"#$%&amp;'()*+, -./:;?@[\]^_

2 min read

btowc() function in C/C++ with Examples

The btowc() is a built-in function in C/C++ which converts a character to its wide character equivalent. It is defined within the cwchar header file of C++. Syntax: wint_t btowc( int ch ); Parameter:The function accepts a single mandatory parameter ch which specifies the single byte character to convert to it's wide character. Return Value: The fun

2 min read

Article Tags :

We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Arrow operator -> in C/C++ with Examples - GeeksforGeeks (5)

'); $('.spinner-loading-overlay').show(); jQuery.ajax({ url: writeApiUrl + 'create-improvement-post/?v=1', type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json', xhrFields: { withCredentials: true }, data: JSON.stringify({ gfg_id: post_id, check: true }), success:function(result) { jQuery.ajax({ url: writeApiUrl + 'suggestions/auth/' + `${post_id}/`, type: "GET", dataType: 'json', xhrFields: { withCredentials: true }, success: function (result) { $('.spinner-loading-overlay:eq(0)').remove(); var commentArray = result; if(commentArray === null || commentArray.length === 0) { // when no reason is availaible then user will redirected directly make the improvment. // call to api create-improvement-post $('body').append('

'); $('.spinner-loading-overlay').show(); jQuery.ajax({ url: writeApiUrl + 'create-improvement-post/?v=1', type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json', xhrFields: { withCredentials: true }, data: JSON.stringify({ gfg_id: post_id, }), success:function(result) { $('.spinner-loading-overlay:eq(0)').remove(); $('.improve-modal--overlay').hide(); $('.unlocked-status--improve-modal-content').css("display","none"); $('.create-improvement-redirection-to-write').attr('href',writeUrl + 'improve-post/' + `${result.id}` + '/', '_blank'); $('.create-improvement-redirection-to-write')[0].click(); }, error:function(e) { $('.spinner-loading-overlay:eq(0)').remove(); var result = e.responseJSON; if(result.detail.non_field_errors.length){ $('.improve-modal--improve-content .improve-modal--improve-content-modified').text(`${result.detail.non_field_errors}.`); jQuery('.improve-modal--overlay').show(); jQuery('.improve-modal--improvement').show(); $('.locked-status--impove-modal').css("display","block"); $('.unlocked-status--improve-modal-content').css("display","none"); $('.improve-modal--improvement').attr("status","locked"); $('.improvement-reason-modal').hide(); } }, }); return; } var improvement_reason_html = ""; for(var comment of commentArray) { // loop creating improvement reason list markup var comment_id = comment['id']; var comment_text = comment['suggestion']; improvement_reason_html += `

${comment_text}

`; } $('.improvement-reasons_wrapper').html(improvement_reason_html); $('.improvement-bottom-btn').html("Create Improvement"); $('.improve-modal--improvement').hide(); $('.improvement-reason-modal').show(); }, error: function(e){ $('.spinner-loading-overlay:eq(0)').remove(); // stop loader when ajax failed; }, }); }, error:function(e) { $('.spinner-loading-overlay:eq(0)').remove(); var result = e.responseJSON; if(result.detail.non_field_errors.length){ $('.improve-modal--improve-content .improve-modal--improve-content-modified').text(`${result.detail.non_field_errors}.`); jQuery('.improve-modal--overlay').show(); jQuery('.improve-modal--improvement').show(); $('.locked-status--impove-modal').css("display","block"); $('.unlocked-status--improve-modal-content').css("display","none"); $('.improve-modal--improvement').attr("status","locked"); $('.improvement-reason-modal').hide(); } }, }); } else { if(loginData && !loginData.isLoggedIn) { $('.improve-modal--overlay').hide(); if ($('.header-main__wrapper').find('.header-main__signup.login-modal-btn').length) { $('.header-main__wrapper').find('.header-main__signup.login-modal-btn').click(); } return; } } }); $('.left-arrow-icon_wrapper').on('click',function(){ if($('.improve-modal--suggestion').is(":visible")) $('.improve-modal--suggestion').hide(); else{ $('.improvement-reason-modal').hide(); } $('.improve-modal--improvement').show(); }); function loadScript(src, callback) { var script = document.createElement('script'); script.src = src; script.onload = callback; document.head.appendChild(script); } function suggestionCall() { var suggest_val = $.trim($("#suggestion-section-textarea").val()); var array_String= suggest_val.split(" ") var gCaptchaToken = $("#g-recaptcha-response-suggestion-form").val(); var error_msg = false; if(suggest_val != "" && array_String.length >=4){ if(suggest_val.length <= 2000){ var payload = { "gfg_post_id" : `${post_id}`, "suggestion" : `

${suggest_val}

`, } if(!loginData || !loginData.isLoggedIn) // User is not logged in payload["g-recaptcha-token"] = gCaptchaToken jQuery.ajax({ type:'post', url: "https://apiwrite.geeksforgeeks.org/suggestions/auth/create/", xhrFields: { withCredentials: true }, crossDomain: true, contentType:'application/json', data: JSON.stringify(payload), success:function(data) { jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-section-textarea').val(""); jQuery('.suggest-bottom-btn').css("display","none"); // Update the modal content const modalSection = document.querySelector('.suggestion-modal-section'); modalSection.innerHTML = `

Thank You!

Your suggestions are valuable to us.

You can now also contribute to the GeeksforGeeks community by creating improvement and help your fellow geeks.

`; }, error:function(data) { jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Something went wrong."); jQuery('#suggestion-modal-alert').show(); error_msg = true; } }); } else{ jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Minimum 5 Words and Maximum Character limit is 2000."); jQuery('#suggestion-modal-alert').show(); jQuery('#suggestion-section-textarea').focus(); error_msg = true; } } else{ jQuery('.spinner-loading-overlay:eq(0)').remove(); jQuery('#suggestion-modal-alert').html("Enter atleast four words !"); jQuery('#suggestion-modal-alert').show(); jQuery('#suggestion-section-textarea').focus(); error_msg = true; } if(error_msg){ setTimeout(() => { jQuery('#suggestion-section-textarea').focus(); jQuery('#suggestion-modal-alert').hide(); }, 3000); } } document.querySelector('.suggest-bottom-btn').addEventListener('click', function(){ jQuery('body').append('

'); jQuery('.spinner-loading-overlay').show(); if(loginData && loginData.isLoggedIn) { suggestionCall(); return; } // load the captcha script and set the token loadScript('https://www.google.com/recaptcha/api.js?render=6LdMFNUZAAAAAIuRtzg0piOT-qXCbDF-iQiUi9KY',[], function() { setGoogleRecaptcha(); }); }); $('.improvement-bottom-btn.create-improvement-btn').click(function() { //create improvement button is clicked $('body').append('

'); $('.spinner-loading-overlay').show(); // send this option via create-improvement-post api jQuery.ajax({ url: writeApiUrl + 'create-improvement-post/?v=1', type: "POST", contentType: 'application/json; charset=utf-8', dataType: 'json', xhrFields: { withCredentials: true }, data: JSON.stringify({ gfg_id: post_id }), success:function(result) { $('.spinner-loading-overlay:eq(0)').remove(); $('.improve-modal--overlay').hide(); $('.improvement-reason-modal').hide(); $('.create-improvement-redirection-to-write').attr('href',writeUrl + 'improve-post/' + `${result.id}` + '/', '_blank'); $('.create-improvement-redirection-to-write')[0].click(); }, error:function(e) { $('.spinner-loading-overlay:eq(0)').remove(); var result = e.responseJSON; if(result.detail.non_field_errors.length){ $('.improve-modal--improve-content .improve-modal--improve-content-modified').text(`${result.detail.non_field_errors}.`); jQuery('.improve-modal--overlay').show(); jQuery('.improve-modal--improvement').show(); $('.locked-status--impove-modal').css("display","block"); $('.unlocked-status--improve-modal-content').css("display","none"); $('.improve-modal--improvement').attr("status","locked"); $('.improvement-reason-modal').hide(); } }, }); });

Arrow operator -> in C/C++ with Examples - GeeksforGeeks (2024)
Top Articles
Complete Guide to Career in Software Testing
How to Become a QA Engineer | Career Karma
Wisconsin Women's Volleyball Team Leaked Pictures
Hertz Car Rental Partnership | Uber
Horned Stone Skull Cozy Grove
Jet Ski Rental Conneaut Lake Pa
Hillside Funeral Home Washington Nc Obituaries
Readyset Ochsner.org
Hartford Healthcare Employee Tools
Conan Exiles Thrall Master Build: Best Attributes, Armor, Skills, More
Curtains - Cheap Ready Made Curtains - Deconovo UK
Forum Phun Extra
Dover Nh Power Outage
Chase Bank Pensacola Fl
Bn9 Weather Radar
Nk 1399
R Baldurs Gate 3
Abga Gestation Calculator
Schooology Fcps
Pioneer Library Overdrive
Miles City Montana Craigslist
Busted! 29 New Arrests in Portsmouth, Ohio – 03/27/22 Scioto County Mugshots
Red Sox Starting Pitcher Tonight
Advance Auto Parts Stock Price | AAP Stock Quote, News, and History | Markets Insider
Emiri's Adventures
Average weekly earnings in Great Britain
Cbs Trade Value Chart Week 10
Myhrconnect Kp
Appleton Post Crescent Today's Obituaries
Soulstone Survivors Igg
Instafeet Login
Can You Buy Pedialyte On Food Stamps
Craigslist List Albuquerque: Your Ultimate Guide to Buying, Selling, and Finding Everything - First Republic Craigslist
Troy Gamefarm Prices
Kelly Ripa Necklace 2022
Husker Football
Appraisalport Com Dashboard Orders
ACTUALIZACIÓN #8.1.0 DE BATTLEFIELD 2042
Arcanis Secret Santa
Craigslist St Helens
Sherwin Source Intranet
FactoryEye | Enabling data-driven smart manufacturing
Clock Batteries Perhaps Crossword Clue
Runescape Death Guard
Msatlantathickdream
Craigslist Monterrey Ca
Competitive Comparison
Psalm 46 New International Version
Laurel Hubbard’s Olympic dream dies under the world’s gaze
Latest Posts
Article information

Author: Trent Wehner

Last Updated:

Views: 6055

Rating: 4.6 / 5 (56 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Trent Wehner

Birthday: 1993-03-14

Address: 872 Kevin Squares, New Codyville, AK 01785-0416

Phone: +18698800304764

Job: Senior Farming Developer

Hobby: Paintball, Calligraphy, Hunting, Flying disc, Lapidary, Rafting, Inline skating

Introduction: My name is Trent Wehner, I am a talented, brainy, zealous, light, funny, gleaming, attractive person who loves writing and wants to share my knowledge and understanding with you.